문제

PHP 사이트에 캐시를 구현하는 가장 좋은 방법은 무엇입니까?분명히 캐시되어서는 안 되는 것(예: 검색어)이 있지만 'digg 효과'를 피할 수 있는 좋은 솔루션을 찾고 싶습니다.

WordPress용 WP-Cache가 있다는 것을 알고 있지만 WP에 구축되지 않은 사용자 지정 솔루션을 작성하고 있습니다.나는 내 자신의 캐시를 작성하는 것(충분히 간단하다면)에 관심이 있거나 멋지고 가벼운 프레임워크를 알려줄 수 있습니다.하지만 저는 Apache를 잘 알지 못하므로 PHP 프레임워크라면 더 적합할 것입니다.

감사해요.

도움이 되었습니까?

해결책

프록시 캐시가 불가능하고 완전한 HTML 파일을 제공하는 경우 PHP를 완전히 우회하여 최상의 성능을 얻을 수 있습니다.방법을 연구하세요 WP 슈퍼 캐시 공장.

캐시되지 않은 페이지는 사이트와 유사한 URL 구조를 가진 캐시 폴더에 복사됩니다.이후 요청에서 mod_rewrite는 캐시된 파일의 존재를 기록하고 대신 제공합니다.다른 RewriteCond 지시어는 댓글 작성자/로그인한 사용자가 실시간 PHP 요청을 볼 수 있도록 하는 데 사용되지만 대부분의 방문자는 Apache에서 직접 서비스를 받게 됩니다.

다른 팁

당신이 사용할 수있는 출력 버퍼링 출력의 일부(캐시하려는 항목)를 선택적으로 저장하고, 너무 길지 않은 경우 다음 사용자에게 표시합니다.이렇게 하면 페이지의 다른 부분(예: 사용자 정의 가능한 상자, 개인 정보)을 즉시 렌더링할 수 있습니다.

가장 좋은 방법은 프록시 캐시(Squid, Varnish)를 사용하고 ETags와 함께 적절한 Cache-Control/Expires 헤더를 제공하는 것입니다.보다 Mark Nottingham의 캐싱 튜토리얼 캐시 작동 방식과 캐싱 프록시의 성능을 최대한 활용할 수 있는 방법에 대한 전체 설명을 참조하세요.

또한 확인해보세요 멤캐시드, 을 클릭하고 거기에 데이터베이스 쿼리(또는 사전 렌더링된 페이지 조각)를 캐시해 보세요.

나는 추천하고 싶다 멤캐시드 또는 APC.둘 다 매우 간단한 API와 많은 라이브러리를 갖춘 메모리 내 캐싱 솔루션입니다.

이 2개의 문제는 웹 서버나 Memcached인 경우 다른 서버에 설치해야 한다는 것입니다.

APC

장점:
  • 단순한
  • 빠른
  • PHP 실행 속도도 향상됩니다.
단점
  • 분산 시스템에서는 작동하지 않습니다. 각 시스템은 캐시를 로컬에 저장합니다.

멤캐시드

장점:
  • 빠르다
  • 모든 웹 서버가 사용할 수 있도록 별도의 서버에 설치 가능
  • LiveJournal에서 고도로 테스트되고 개발됨
  • 모든 대기업(Facebook, Yahoo, Mozilla)에서 사용함

    단점:
  • APC보다 느림

  • 가능한 네트워크 대기 시간
  • 약간 더 많은 구성

나는 직접 작성하는 것을 권장하지 않습니다. 거기에는 많은 것이 있습니다.웹 서버에 소프트웨어를 설치할 수 없는 경우 디스크 기반 캐시를 사용할 수 있지만 처리해야 할 경합 문제가 있을 수 있습니다.한 요청은 파일에 쓰는 동안 다른 요청은 읽는 중일 수 있습니다.

실제로 몇 초에서 몇 분 동안이라도 검색어를 캐시할 수 있습니다.DB가 초당 몇 번 이상 업데이트되지 않는 한 약간의 지연은 괜찮습니다.

PHP Smarty 템플릿 엔진(http://www.smarty.net)에는 상당히 발전된 캐싱 시스템이 포함되어 있습니다.

Smarty 매뉴얼의 캐싱 섹션에서 자세한 내용을 확인할 수 있습니다. http://www.smarty.net/manual/en/caching.php

PHP 캐시 프레임워크를 찾고 있는 것 같습니다.나는 매우 훌륭한 CacheSystem 플러그인과 함께 제공되는 TinyButStrong 템플릿 시스템을 추천합니다.간단하고 가벼우며 사용자 정의가 가능하고(html 파일의 원하는 부분을 캐시할 수 있음) 매우 강력합니다 ^^

페이지 또는 페이지 일부의 간단한 캐싱 - Pear::CacheLite 클래스.나는 또한 APC와 Memcache를 다양한 용도로 사용하지만 지금까지 본 다른 답변은 더 완전하고 복잡한 시스템에 대한 것입니다.페이지의 일부를 재구축하는 데 드는 노력을 줄여야 한다면 파일 지원 저장소가 있는 Cache_lite만으로도 충분하고 구현이 매우 간단합니다.

프로젝트 가젤 (오픈 소스 토렌트 사이트)는 사이트에 Memcached를 설정하는 방법에 대한 단계별 가이드를 제공합니다. 이 가이드는 많은 트래픽을 처리할 다른 웹사이트에서 쉽게 사용할 수 있습니다.

소스를 다운받아 문서를 읽어보세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top