답변:
html5boilerplate.com 에는 고려해야 할 많은 표준 설정이 포함 된 주석이 달린 .htaccess 파일 이 포함되어 있습니다 . 그중에는 콘텐츠 만료 (Expires, E-tags ...)에 적합한 설정이 있습니다.
다음 은 mod_expires에 대한 설명서입니다 .
참고 Last-Modified
헤더가 약한 캐시 헤더입니다. 현재 환경 설정은 Cache-Control
헤더 를 사용하는 것 입니다.
구글은 이것에 대한 좋은 기사를 가지고 있습니다.
만료 및 캐시 제어 : 최대 연령. 이는 자원의 "신뢰도 수명", 즉 웹 서버에서 새 버전을 사용할 수 있는지 확인하지 않고 브라우저가 캐시 된 자원을 사용할 수있는 기간을 지정합니다. 무조건 적용되는 "강력한 캐싱 헤더"입니다. 즉, 일단 설정되고 리소스가 다운로드되면 브라우저는 만료 날짜 또는 최대 수명에 도달 할 때까지 리소스에 대한 GET 요청을 발행하지 않습니다.
최종 수정 및 ETag. 이들은 파일이 동일한 지 여부를 판별하기 위해 브라우저가 확인하는 자원에 대한 일부 특성을 지정합니다. Last-Modified 헤더에서 항상 날짜입니다. ETag 헤더에서 이는 리소스를 고유하게 식별하는 모든 값이 될 수 있습니다 (파일 버전 또는 콘텐츠 해시가 일반적 임). Last-Modified는 브라우저가 휴리스틱을 적용하여 항목을 캐시에서 가져올 지 여부를 결정한다는 점에서 "약한"캐싱 헤더입니다. (휴리스틱은 브라우저마다 다릅니다.) 그러나 이러한 헤더를 사용하면 사용자가 페이지를 명시 적으로 다시로드 할 때 조건부 GET 요청을 발행하여 브라우저가 캐시 된 리소스를 효율적으로 업데이트 할 수 있습니다. 조건부 GET은 서버에서 리소스가 변경되어 전체 GET보다 대기 시간이 짧은 경우가 아니면 전체 응답을 반환하지 않습니다.
내가 사용하거나 추천 Cache-Control
또는 Expires
그들이 강력한 캐시 헤더 때문에 필요에 따라 헤더. 일부 시스템은 마지막 수정 날짜를 무시합니다.
그런 다음 curl
또는 http://redbot.org 와 같은 도구를 사용 하여 헤더를 확인할 수 있습니다.
Last-Modified
다른 캐싱 명령이없는 상태에서 헤더 를 사용 하면 캐시 기간이 HTTP 클라이언트에 남는다는 것입니다. Last-Modified
날짜 이후에 리소스가 수정되지 않은 경우 리소스가 최신 상태로 간주되어야합니다. 반대로 Expires
또는 Cache-Control
헤더를 사용하면 원점이 명시 적 재생 기간을 설정할 수 있습니다.
Expires
만료되지 않는 리소스에는 전혀 부적절한 헤더입니다. 일부 리소스는 수정 될 수 있지만 만료 날짜는 아닙니다. 구글의 요점은Last-Modified
조건부 GET 이 필요한 반면Expires
브라우저 캐시는 GET을 완전히 건너 뛸 수 있다는 것입니다.