it-swarm-ko.tech

WordPress는 얼마나 잘 확장됩니까?

새로운 WordPress와 새로운 기능으로 인해 WordPress는 단순한 블로그 엔진 이상의 기능을 제공합니다. 하지만 WordPress의 규모가 하루에 10k -> 100,000 명이라고 말하는 것으로 얼마나 잘 사용됩니까?

많은 사용자가 그 중 큰 부분을 차지하는 것이 좋은 캐시 전략이지만 WordPress가 얼마나 쉽게 개발되어 도움이되는지 쉽게 파악하고 필요한 제어 기능을 제공합니다. Fx는 페이지의 일부분을 캐싱 할 수 있으며 사용자 정의 된 부분 만 렌더링하고, 마스터/슬레이브 DB 설정을 지원합니다.

34
googletorp
  1. 공유 호스팅을 많이 기대하지 마십시오. 공유 호스트에있는 경우 WordPress를 느리게하지 마십시오. 공유 호스트는 1000 개의 계정을 하나의 서버로 밀어 넣을 수 있습니다. 따라서 하루 종일 10 달러/월 계정을 최적화하여 지출 할 수 있으므로 문제가되지 않습니다. 또한 "클라우드"가 100 대 또는 1000 대의 사람들과 하나의 서버를 공유하지 않는다는 것을 의미하기 때문에 마케팅 전문 용어에주의하십시오.

  2. 나는 캐시 플러그인이이 시점에서 필요하다고 생각하지 않는다. WP 소스 코드를 살펴보면 이미 핵심에 구워진 고급 캐싱이 있습니다. 캐시 캐시의 캐시 - 조심하십시오. 이것은 비생산적 일 수 있습니다.

  3. 당신을 늦추는 주된 이유는 느린 MySQL 쿼리와 WordPress에서 즉시 문제가 발생하지 않아야합니다. 그러나 50,000 개 이상의 의견이 있었기 때문에 내 의견 쿼리를 "제한"해야했습니다. (아직 정해지지 않았습니까?) 또한 1000 개 카테고리와 같이 비정형적인 작업을 수행하는 경우 문제가 될 수 있습니다.

  4. Linode 512를 NginX와 함께 사용하고 "top"은 PHP와 NginX가 요청 당 1/100 초 이내에 작업을 수행함을 보여줍니다. 거의 모든 CPU 시간은 MySQL과 연결됩니다. 당신은 20 달러짜리 Linode로 매월 100 만 페이지를 제공 할 수 있지만 일단 플러그인과 사진을 추가하기 시작하면 "1GB"Linode가 필요합니다. 내 관점에서 보았을 때 선형 적이기 때문에 페이지 뷰가 두 배라면 Linode의 크기를 두 배로 늘릴 수 있습니다.

면책 조항 : 나는 Linode를 위해 일하지 않습니다.


PHP로 페이지의 일부분을 캐시하고 싶으므로 업데이트 (~ 2 년 후). 사용하는 간단한 해결책은 놀랍도록 빠릅니다. 1/100th 초 내에 페이지 당 여러 개의 개별 파트/부분을 캐시합니다. 램 디스크가 더 빨라질 수는 있지만 내 요구에는 충분히 빠르다.

$cache_file = "./cache/portion-1". $since; // maybe round() this $since timestamp
$cache_life = 1000; // seconds to keep this cached
$filemtime = filemtime($cache_file);  // returns FALSE if file does not exist
if (!$filemtime or (time() - $filemtime >= $cache_life)) {

    // heavy lifting starts
    $output = 'Heavy!';
    // heavy lifting ends

    if (!file_put_contents($cache_file,$output,LOCK_EX)) { echo 'error'; } // save the cache    
    echo $output;

} else { 

    // load from cache
    $output = file_get_contents($cache_file); 
    echo $output;        
} 
4
PJ Brunet

WordPress의 규모를 늦추는 궁극적으로 3 가지가 있습니다.

  • 스택 호스팅 - 최신 소프트웨어로 좋은 호스트가 필요합니다. PHP 7, Nginx, Varnish, Redis, fail2ban 및 PerconaDB 모두 좋은 선택입니다.
  • 테이블 스캔이 없음 - 많은 플러그인은 테이블 스캔이 무엇인지 모르는 아마추어 코더가 작성합니다. 테이블 스캔을 피하려면 두 가지가 필요합니다. 사용 가능한 인덱스와 인덱스를 사용할 수있는 방식으로 작성된 쿼리
  • PHP 루프 내부에 SQL 쿼리가 없거나 거의 없습니다 - 일부 플러그인 코드는 아주 작은 사이트에서만 테스트되었으며 이유는 데이터베이스의 모든 제품을 순환하여 각 제품에 대한 새로운 SQL 호출을 만듭니다 /우편. 이상적으로 페이지 당 100 개 미만의 SQL 쿼리를 원합니다 - 많이 들리지만 사실은 아니며 100 미만의 TTFB를 얻을 수 있습니다.

위와 같이 설정하면 캐싱을 추가 할 수 있습니다 (예 : 광택, CDN, 페이지 캐싱 등.

수평 확장이 필요한 경우 데이터베이스 용 PerconaDB XtraDB와 파일 용 Unison을 사용하여 클러스터를 만들 수 있습니다. 이렇게하면 wp-admin 및 cron 러너로 1 개의 노드를 가질 수 있고로드 밸런서 뒤에 웹 트래픽을 처리하는 다른 노드를 가질 수 있습니다.

0
Dave Hilditch