HTTP 헤더 만료 및 캐시 제어
1. 개념
캐시 제어는 HTTP 캐싱을 제어하는 데 사용됩니다(HTTP/1.0에서는 부분적으로 구현되지 않을 수 있으며, Pragma에서만 구현되어 있습니다: 노캐시가 구현됨)
패킷 내 형식:
Cache-Control: cache-directive
캐시 지시는 다음과 같을 수 있습니다:
요청: | "캐시 없음" | "노-스토어" | "최대 연령" "=" 델타초 | "맥스-스테일" [ "=" 델타초 ] | "최소 신선" "=" 델타초 | "변신 금지" | "만-캐시" | "캐시 확장"
답변: | "공공" | "개인" [ "=" <"> 필드 이름 <"> ] | "노캐시" [ "=" <"> 필드 이름 <"> ] | "노-스토어" | "변신 금지" | "반드시 재검증해야 한다" | "프록시 재검증" | "최대 연령" "=" 델타초 | "S-맥세지" "=" 델타초 | "캐시 확장"
설명의 일부: 캐시 가능 여부로 나누어 공개는 응답이 어떤 캐시 영역에서도 캐시될 수 있음을 나타냅니다. Private는 단일 사용자의 응답 메시지 전부 또는 일부가 공유 캐시에서 처리될 수 없음을 의미합니다. 이 기능은 사용자가 부분 응답 메시지로, 다른 사용자의 요청에는 유효하지 않습니다. 노캐시는 요청 또는 응답 메시지가 캐시될 수 없음을 나타냅니다(HTTP/1.0은 Pragma의 노캐시로 대체됨) 캐시할 수 있는 범위에 따라 스토어 없음은 중요한 정보가 의도치 않게 게시되는 것을 방지하기 위해 사용됩니다. 요청 메시지를 보내면 요청과 응답 메시지가 캐시가 되지 않게 됩니다. 캐시에 따른 타임아웃 max-age는 클라이언트가 지정된 시간(초 단위)을 초과하지 않는 응답을 받을 수 있음을 나타냅니다. min-fresh는 클라이언트가 현재 시간보다 짧은 응답 시간과 지정된 시간을 더한 응답을 받을 수 있음을 나타냅니다. max-stale은 클라이언트가 타임아웃 기간을 넘어서도 응답 메시지를 받을 수 있음을 나타냅니다. 최대 오래된 메시지의 값을 지정하면, 클라이언트는 초과 근무 기간의 지정된 값을 초과하는 응답 메시지를 수신합니다. 만료는 존재 시간을 나타내며, 클라이언트가 이 시간 이전에 확인(요청을 하지 않아도 됨)을 허용하며, 이는 최대 연령과 동일합니다 효과. 하지만 동시에 존재한다면, 캐시-컨트롤의 최대 연령에 의해 덮어쓰여집니다. 판: Expires = "Expires" ": HTTP-date 예를 들어
Expires: Thu, 01 Dec 1994 16:00:00 GMT (必须是GMT格式)
2. 적용 만료 설정과 HTTP 기반 META를 통한 캐시 제어 <meta http-equiv="Cache-Control" content="max-age=7200" /> <meta http-equiv="Expires" content="2009년 7월 20일 월요일 23:00:00 GMT" /> 위 설정들은 단지 예시일 뿐이며, 실제로 그 중 하나를 사용할 수 있습니다. 이렇게 작성하면 웹페이지에만 유효하며, 웹페이지의 이미지나 다른 요청에는 해당되지 않으며 캐시도 실행하지 않습니다. 이렇게 하면 클라이언트가 더 많은 요청을 받게 되고, 최종 수정 상태를 확인하는 것이긴 하지만, 요청 수가 분명히 브라우징 속도에 영향을 미칩니다. 파일에 캐시를 추가하고 싶다면, Apache의 mod_expire 모듈을 사용할 수 있습니다. 이 모듈은 다음과 같이 작성되어 있습니다 <만약 모듈 mod_expires.c> 만료 활성화 중 만료 기본값 "접근 권한 플러스 1일" </IfModule> ExpiresActive가 켜져 있는 걸 기억하는데, 처음에는 켜지 않았고, 아무리 YSlow를 해도 캐싱 메커니즘을 찾을 수가 없는 것 같아요. 이렇게 추가하면 기본값이 모두 표시됩니다. 개별 MIME 유형을 타겟팅하고 싶다면, 다음과 같은 방법이 있습니다: 만료 대상(ExpiresByType) 이미지/GIF "접근 권한 5시간 3분" 아파치 모듈 mod_expires 참조 또한 브라우저에서 새로고침을 클릭하면 클라이언트가 보내는 모든 요청이 max-age=0으로 표시되어 요청이 검증되어 서버로 전송되었음을 나타냅니다 캐시를 확인한 후 캐시를 업데이트하려 하면 일반적으로 304 '수정되지 않음'이 나오는데, 이는 변경 사항이 없다는 뜻입니다.
|