2011-04-14 6 views
2

웹 페이지의 전체 페이지 캐싱을 제공하는 PHP 용 Quickcache를 사용하고 있습니다. 그것은 훌륭하게 작동하지만 내 유일한 문제는 내가 동적 인 웹 사이트를 가지고 있으며 캐싱이 켜져있을 때 특정 방식으로 원하는 방식으로 업데이트하지 않는다는 것입니다.동적 데이터 캐싱 처리

예를 들어 사용자가 로그인하면 사용자가 로그인 한 서버에도 로그인 상자가 계속 표시됩니다 (사이트의 캐시되지 않은 부분으로 이동할 수 있으며 로그인 한 사용자에게 표시됨). 완벽하게).

사용자가 로그인하거나 작은 설정을 변경할 때마다 캐시를 ​​덤프 할 수 없으며 과장 될 수 있습니다.

사이트를 사용할 수 없게 만들었 기 때문에 캐시 할 수없는 것처럼 보였습니다. 사이트를 캐시하지 않으면 감지 할 수없는 부하에서 사용할 수 없게됩니다.

이 문제는 어떻게 해결해야합니까? 저는 캐싱을 처음 접했을 때 처음이었습니다. 처음으로 프로덕션을 위해 내 사이트 중 하나를 배포하고 있습니다. 분명히 다른 사람들이이 문제를 안고 해결했습니다.

답변

6

저는 PHP 사용자가 아니지만 캐싱에 관해 말할 수 있습니다.

사용자 당 콘텐츠를 생성하는 동적 사이트는 효율적으로 수행하는 것이 가장 까다 롭지 만 수행 할 수 있습니다. 캐시 할 방법, 위치 및 캐시를 결정하기 위해 애플리케이션의 데이터 흐름을 살펴볼 필요가 있습니다. - 응용 프로그램 메모리에 캐시와 그것을 대신 DB에가는 잡아

  • 데이터 사용자 별 또는 페이지별로 변경되지 않습니다 : 여기에 몇 가지 지침입니다. 캐시를 사용자 세션에
  • 페이지 당 변경하지만 사용자 당 데이터 - - 사용자별로 변경하지만 페이지 당
  • 데이터 응용 프로그램 메모리에 캐시를 키
  • 데이터로 페이지 이름을 사용하여 해당 페이지 당 사용자 당 변경 - 페이지 이름이 인 세션의 캐시
  • 페이지 요청 당 고유 한 데이터 - 캐시하지 않습니다.

데이터베이스의 데이터뿐만 아니라 캐싱 후보도 있습니다. 데이터를 조작하는 복잡한 논리 블록이있는 경우 해당 논리 출력의 캐싱을 고려하십시오.

0

당신 사이트에 너무 많은 트래픽이 발생하게 된 것은 운이 좋을 것입니다. 그렇지 않습니까?

이 특정 도구 "Quickcache"가 어떻게 작동하는지 잘 모르지만 개념적으로 수행하려는 작업은 캐시 할 수있는 부분에 포함 된 최상위 PHP 파일을 포함하므로 세미 정적 부분을 캐시 된 사본 및 각로드시 동적 내용이 포함 된 최상위 레벨 문서 Smarty는 내가 믿는 템플릿으로이 작업을 수행 할 수 있습니다. 간단한 경우 (그리고 그렇게 간단하지 않은 경우) 나는 보통 내 자신의 코드를 작성합니다.

그런 다음 필요에 따라 캐시 파일을 지우거나, cron으로 매일로드하거나, 값을 변경하는 관리 업데이트로 코드에서 트리거합니다.

0

라이브러리에 사용하는 문서가 좋지 않아서 좋은 것을 찾지 못했습니다.

하지만이 프레임 워크를 사용하는 경우 예를 들어 Zend_Cache lib를 사용하여 캐싱 시스템을 만들 것을 제안합니다. 캐시 할 대상과 캐시 방법을 결정하므로 기본적으로 최상의 효과를 얻을 수 있습니다.

페이지가로드되면 캐시의 페이지가 있는지 확인하고 페이지가 있으면 사용합니다.

일부 동적 동작 (경로)을 캐싱하지 않으므로이 방법을 제안 할 수 있습니다. 단순히 캐싱 시스템에서 제외시킬 수 있습니다. 복잡한 쿼리로 비슷한 일을하고 있지만 모든 것을 캐시 할 수 있습니다. 페이지에서 sth을 변경 한 직후에 캐시를 새로 고칠 수 있습니다.

0

죄송합니다. 이전 게시물을 되살려 보시지 만,이 글을 읽은 후에 나는 OP 질문이 여전히 적합하다고 생각합니다.

내가 수집 한 것부터 당신이 가진 것은 개인화와 신선도 문제입니다. 동적 사이트를 다룰 때 매우 공통적 인 문제입니다.

은 무엇 당신이해야 할 것은 :

A. 모니터 콘텐츠 사용은 지속적으로 다시 제공 (그러나 캐시하지 않음) 된 동적 객체를 식별 할 수 있습니다. 을 절대적으로 (100 %)으로 변경하면 개인화 관련 문제를 피할 수 있으므로 상호 인증을 사용하고 단단한 방법을 사용해야합니다 (크기를 바이트로 확인하십시오)

B. 좋은 "잠재적 후보"를 찾았 으면 캐싱을 위해 새로운 HTTP 지시문을 무시하거나 작성하여 Cachable으로 만듭니다.

C. 콘텐츠 사용을 지속적으로 모니터링하고 수시로 새 버전을 새로 고치고 현재 캐시 된 개체와 비교하여 최신 상태로 유지합니다.

이것은 그것의 요지입니다. 비슷한 "학습"캐싱 메커니즘에 대한 설명은 Dynamic Caching에서 확인할 수 있습니다.

동적 인 콘텐츠를 캐싱하고 신선도를 위해 5 분의 재생 빈도를 사용하는 유사한 학습 학습을 사용했습니다.

GL.