Nice programing

HTTP 캐시 제어 최대 사용 기간, 반드시 재확인

nicepro 2020. 11. 2. 19:35
반응형

HTTP 캐시 제어 최대 사용 기간, 반드시 재확인


Cache-Control과 관련된 몇 가지 쿼리가 있습니다.

max-age=3600, must-revalidateHTTP 헤더에 정의 된 Last Modified Header와 함께 정적 html / js / images / css 파일에 대해 Cache-Control 지정하면 :

  1. 브라우저 / 프록시 캐시 (예 : Squid / Akamai)가 원본 서버로 이동하여 max-age가 만료되기 전에 유효성을 검사 합니까? 아니면 max-age가 만료 될 때까지 캐시에서 콘텐츠를 제공합니까?
  2. max-age 만료 후 (즉, 캐시에서 만료 됨) If-Modified-Since 검사가 있습니까? 아니면 If-Modified-Since 검사없이 원본 서버에서 콘텐츠를 다시 다운로드합니까?

a) 서버에이 헤더가 포함 된 경우 :

Cache-Control "max-age=3600, must-revalidate"

콘텐츠가 부실 (3600 초 이상)되면 콘텐츠를 제공하기 전에 원본 서버에서 재 검증해야 함을 클라이언트 캐시와 프록시 캐시에 모두 알려줍니다. 이것은 캐싱 시스템의 기본 동작이어야하지만 must-revalidate지시문은이 요구 사항을 명확하게 만듭니다.

b) 클라이언트는 재 검증해야합니다. ETag와 함께 If-Match또는 If-None-Match헤더를 사용하여 재확인 하거나 날짜와 함께 If-Modified-Since또는 If-Unmodified-Since헤더를 사용할 수 있습니다 .


ㅏ. 이 페이지 의 '통계'탭을 보고 어떤 일이 발생하는지 확인하십시오.

비. 만료 후 브라우저는 파일이 업데이트되었는지 서버에서 확인합니다. 그렇지 않은 경우 서버는 304 Not Modified헤더로 응답 하고 아무 것도 다운로드되지 않습니다.

Firebug 또는 유사한 도구의 'Net'패널을보고이 동작을 직접 확인할 수 있습니다. 주소 표시 줄에 URL을 다시 입력하고 캐시가 비어있을 때 HTTP 요청 수와 요청 수를 비교하면됩니다.


주어진 답변은 적어도 2019 년 웹 브라우저의 경우 올바르지 않습니다.

"만료 후 브라우저는 파일이 업데이트되었는지 서버에서 확인합니다."<-참이 아님

"Cache-Control : public, must-revalidate, max-age = 864000"과 함께 제공되는 정적 파일이 있으며 Chrome과 Firefox는 매번 요청을 수행합니다 (매번 304 Not Modified를 다시받습니다).

참고 URL : https://stackoverflow.com/questions/2932890/http-cache-control-max-age-must-revalidate

반응형