HTTP 캐시 제어 최대 사용 기간, 반드시 재확인
Cache-Control과 관련된 몇 가지 쿼리가 있습니다.
max-age=3600, must-revalidate
HTTP 헤더에 정의 된 Last Modified Header와 함께 정적 html / js / images / css 파일에 대해 Cache-Control 을 지정하면 :
- 브라우저 / 프록시 캐시 (예 : Squid / Akamai)가 원본 서버로 이동하여 max-age가 만료되기 전에 유효성을 검사 합니까? 아니면 max-age가 만료 될 때까지 캐시에서 콘텐츠를 제공합니까?
- 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
'Nice programing' 카테고리의 다른 글
Visual Studio-참조에 소스 코드 첨부 (0) | 2020.11.02 |
---|---|
node.js의 require ()는 어떻게 작동합니까? (0) | 2020.11.02 |
QPushButton에 이미지를 설정하는 방법은 무엇입니까? (0) | 2020.11.01 |
크롬에서 이미지의 대체 텍스트를 표시하는 방법 (0) | 2020.11.01 |
LinkedList 또는 ArrayList를 통해 또는 그 반대로 HashMap을 사용하는 경우 (0) | 2020.11.01 |