정적 콘텐츠가 포함된 동적 웹사이트에 대해 PHP를 사용하여 HTTP 캐싱을 효과적으로 구현하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-11-04 09:35:01
원래의
831명이 탐색했습니다.

How can I effectively implement HTTP caching with PHP for dynamic websites with static content?

PHP와 HTTP 캐싱 통합

페이지 콘텐츠가 기본적으로 정적으로 유지되지만 동적 템플릿으로 둘러싸인 상황에서는 HTTP 캐시 헤더를 활용하여 최적화할 수 있습니다. 페이지 전달. 다음은 PHP를 사용하여 효과적인 캐싱을 구현하기 위한 간단한 가이드입니다.

캐싱을 위한 필수 헤더

캐싱을 활성화하려면 다음 헤더 전송을 고려하세요.

  • Content-Type: 응답의 MIME 유형과 문자 집합을 지정합니다.
  • Vary: Accept: 클라이언트의 Accept에 따라 응답이 달라질 수 있음을 나타냅니다. 헤더, 콘텐츠 협상 제어
  • Cache-Control: private_no_expire와 같은 지시문을 설정하여 개인 캐싱을 허용하지만 재검증을 방지합니다. 또는 공개를 사용하여 공유 캐싱을 허용하세요.
  • 최종 수정: 콘텐츠가 마지막으로 수정된 날짜와 시간을 제공하세요.
  • ETag: 클라이언트가 캐시된 버전이 아직 최신인지 확인하는 데 사용할 수 있는 고유 식별자를 콘텐츠에 할당합니다.

조건부 요청 및 처리

if-modified-sinceif-none-match:

  • if-modified-since를 사용하여 들어오는 조건부 요청을 처리합니다. : 요청 헤더를 Last-Modified 헤더와 비교하세요. 캐시된 버전이 여전히 유효한 경우 304(수정되지 않음) 상태 코드를 반환합니다.
  • if-none-match: ETag 헤더에 대해 유효성을 검사합니다. 캐시된 버전이 일치하면 304를 반환합니다.

캐시 유효성 확인

ETag를 생성할 때 체크섬 또는 사용자와 같은 요소의 조합 사용을 고려하세요. ID, 언어, 타임스탬프. 정적 콘텐츠를 오래 지속하려면 만료 시간을 더 길게 설정하세요.

구현 예시

<code class="php">$tsstring = gmdate('D, d M Y H:i:s ', $timestamp) . 'GMT';
$etag = $language . $timestamp;

$if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false;
$if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] : false;
if ((($if_none_match &amp;&amp; $if_none_match == $etag) || (!$if_none_match)) &amp;&amp; 
($if_modified_since &amp;&amp; $if_modified_since == $tsstring))
{
header('HTTP/1.1 304 Not Modified');
exit();
}
else
{
header("Last-Modified: $tsstring");
header("ETag: \"{$etag}\"");
}</code>
로그인 후 복사

위 내용은 정적 콘텐츠가 포함된 동적 웹사이트에 대해 PHP를 사용하여 HTTP 캐싱을 효과적으로 구현하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿