현재 위치: > 최신 기사 목록> 캐시 방지 : 캐시 제어 및 Pragma에 대한 팁 설정

캐시 방지 : 캐시 제어 및 Pragma에 대한 팁 설정

M66 2025-05-28

웹 개발에서 때때로 브라우저 또는 프록시 서버가 페이지를 캐시하지 않도록하여 사용자가 방문 할 때마다 최신 콘텐츠를 얻을 수 있도록해야합니다. PHP가 제공 한 헤더 () 함수는 캐시 동작을 제어하기 위해 HTTP 헤더를 보내는 데 사용될 수 있습니다. 이 기사는 캐싱 () 함수를 사용하여 캐싱을 효과적으로 방지하기 위해 캐시 제어Pragma를 설정하는 방법을 자세히 소개합니다.

1. 왜 캐싱을 방지해야합니까?

브라우저 캐시는 성능을 향상시키고 서버 압력을 줄이기 위해 설계되었지만 일부 시나리오 (예 : 동적 데이터, 사용자 개인 정보, 민감한 운영 페이지 등)에서는 캐시에서로드하는 대신 브라우저가 서버에서 최신 컨텐츠를 가져와야합니다.

캐시 제어가 올바르게 설정되지 않으면 사용자는 만료 된 페이지를 볼 수 있으므로 작업이 일관되지 않거나 작동 중 오류가 발생할 수 있습니다.

2. HEADER () 함수를 사용하여 HTTP 헤더를 보냅니다

PHP의 Header () 함수를 사용하면 RAW HTTP 헤더 정보를 브라우저로 보낼 수 있으며 출력 (Echo, Print, HTML) 전에 호출해야합니다.

3. 캐시 제어를 설정하십시오

캐시 제어는 HTTP/1.1에서 도입 한 중요한 헤더이며 캐싱 정책을 정의하는 데 사용됩니다. 캐싱을 비활성화하려면 다음 명령을 사용할 수 있습니다.

  • 없음 스토어 : 캐시가 허용되지 않습니다.

  • 캐시가 없음 : 매번 존중해야합니다.

  • 반드시 검증 : 만료 된 리소스는 서버에 확인해야합니다.

샘플 코드 :

 <?php
// 캐시를 비활성화합니다
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
?>

두 번째 헤더 ()는 여기서 호출합니다. 잘못된 매개 변수는 이름이 같은 이전 헤더를 덮어 쓰지 않고 추가해야 함을 의미합니다.

4. Pragma를 설정하십시오

Pragma는 이전 프록시 서버와의 호환성을 위해 HTTP/1.0의 오래된 방법입니다.

샘플 코드 :

 <?php
header("Pragma: no-cache");
?>

캐시 제어는 현재 주로 사용되고 있지만, 호환성을 위해 Pragma : No-Cache를 추가하는 것이 좋습니다.

5. 만료

캐시 제어Pragma 외에도 만료 헤더를 설정하고 만료 시간을 과거의 특정 지점으로 설정하고 컨텐츠가 만료되도록 강요 할 수 있습니다.

샘플 코드 :

 <?php
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
?>

6. 완전한 예

다음은 완전한 안티 캐시 예입니다.

 <?php
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");

// 동적 컨텐츠가 출력이라고 가정하십시오
echo "<html><body>";
echo "<h1>현재 시간: " . date('Y-m-d H:i:s') . "</h1>";
echo "<p>입장 <a href=\"https://m66.net/demo\">m66.net 샘플 페이지</a></p>";
echo "</body></html>";
?>

7. 주목할만한 것들

  • 출력을 보내기 전에 헤더 ()를 호출해야합니다. 그렇지 않으면 "이미 전송 된 헤더"오류가 발생합니다.

  • 다른 브라우저와 프록시 서버마다 캐시 지침에 대해 약간 다른 지원이 있습니다. 보험의 경우 캐시 제어 , 프라그마를 설정하고 동시에 만료하는 것이 가장 좋습니다.

  • 캐시 플러그인 또는 CDN을 사용하는 경우 이러한 수준에서 캐시 방지 정책을 구성해야 할 수도 있습니다.