2011-02-10 6 views
1

Google은 많이 사용되는 웹 사이트의 캐싱 전략을 설계하고 있습니다. 사이트는 동적 콘텐츠와 정적 콘텐츠가 혼합되어 구성됩니다. 프론트 엔드는 PHP이고, 중간 계층은 톰캣과 MySQL이다.많이 사용되는 웹 사이트의 캐싱 전략

자격 증명을 보호하기 위해 HTTPS를 통해 사용자 로그인 화면 만 수행됩니다. 그 후에 모든 콘텐츠는 일반 HTTP를 통해 제공됩니다. 일부 화면은 고객에게 한정적이며 (마지막 주문을 말합니다) 다른 화면은 모든 사용자에게 공통적입니다 (가장 인기있는 제품, 프로모션, 규칙 등).

예상 트래픽 양을 감안할 때 포괄적 인 캐싱 전략이 필요하다는 것은 확실합니다. 그래서 우리는 다음과 같은 옵션을 고려하고 :

  1. PHP 앞에 오징어 또는 광택을 넣어 모든 공개 컨텐츠와 고객의 도 주문 제출 양식을 캐시를 구성합니다.
  2. (즉 웹 서버에 콘텐츠를 반환하기 전에, 등으로 Ehcache 등의 로컬 캐시에서 페치하려고) 중간 계층/TOMCATS에 캐싱을 구현 (예 : 가장 인기있는 제품으로) 페이지 단편을 캐시 할 수 PHP로 memcached를
  3. 사용
  4. Zend Cache와 같은 PHP 수준의 캐시를 사용하고 페이지 조각을 저장하십시오. 이것은 내가 언급했지만 Zend 프레임 워크에 내장 된 두 번째 옵션에 가깝습니다.

이러한 전략을 조합하여 사용할 수도 있습니다.

그래서 Varnish와 같은 프론트 캐시를 추가하거나 내부에서 Zend Cache를 사용하는 것이 좋습니다.


내가 언급 한 것을 잊어 버린 또 다른 옵션은 Zend Cache와 같은 PHP 수준의 캐시를 사용하고 페이지 조각을 저장하는 것입니다. 이것은 내가 언급했지만 Zend 프레임 워크에 내장 된 두 번째 옵션에 가깝습니다.

그래서 Varnish와 같은 프론트 캐시를 추가하거나 내부에서 Zend Cache를 사용하는 것이 좋습니다.

감사합니다. Philopator.

+0

어느 전략을 선택하든 광택 캐시 페이지를 사용한다는 것은 PHP에서 페이지로드를 완전히 제거 할 수 있음을 의미합니다. 그 자체로 처리 할 수있는 트래픽 양에 큰 차이가 발생할 수 있습니다. – ZoFreX

답변

1

이 같은 꽤 많은 프로젝트를 수행하고 있음을 발견했습니다 : A (전체) 사용자 지정 솔루션을 만드는 것은 어렵고 비용이

  • . 다행히 당신은 오징어/니스, memcache에 그리고으로 Ehcache는
  • 이 사이트의 동적 거동 많이 다르고 가장 귀하의 사이트를 알고, 그래서 그것이 캐시의 여러 계층을 배포하는 것이 합리적 특정 캐싱 전략
  • 을 고안하는 것이 합리적 발견 . 그러나 이는 사이트의 행동을 복잡하게 만들 수 있으므로 사이트와 관련된 모든 사람에게 비즈니스와 관련하여 알려주고 엔지니어에게 많은 정보를 알려야합니다.
  • 어떻게 문제를 디버그할지 생각해보십시오. 예 : 캐시 된 데이터의 최신 성을 나타내는 헤더를 추가하고 특정 사용자가 캐시를 제거하거나 피할 수있게합니다.
  • 다른 캐시 계층의 작동 방식을 정기적으로 점검합니다 (예 : 광택 장비에 nagios 플러그인 사용).그것은이다 : 당신의 성능 문제는 그냥 잠시 동안 어떤 캐시 :
  • 캐싱 특정 개체를 구축하기 전에
  • 측정은 이미 내가 많은 광택을 좋아

요즘 매우 중요한 개선을 할 수있다 Java/PHP 코드가 복잡하지 않은 별도의 레이어를 사용하면 빠르고 유연합니다. 단점은 vcl의 구성이 너무 복잡하다는 것입니다.

작은 데이터 세트로 대기 시간 (예 : 데이터베이스 쿼리 또는 서비스 요청)을 피하기 위해 메모리 저장소에 ehcache +를 사용하고 많은 양의 데이터가 있고 캐시가 여러 노드에서 공유되어야하는 경우 memcached를 사용합니다.

+0

답장을 보내 주셔서 감사합니다. – Philopator

+0

도움이 필요하십니까? :) http://stackoverflow.com/questions/35632607/is-the-http-verb-purge-idempotent –

관련 문제