Apache의 콘텐츠 유형을 기반으로 캐시 제어 헤더 설정

Apache의 콘텐츠 유형을 기반으로 캐시 제어 헤더 설정

우리는 모든 공개 사이트 페이지에 Cache-Control 헤더: max-age=300, public을 설정하려고 합니다. Filesmatch를 사용하려면 내 응용프로그램 페이지에 확장자가 없습니다. ExpiresByType을 사용할 수 있지만 고유한 단점이 있습니다.

콘텐츠 유형이 text/html인 모든 응용 프로그램 페이지에 캐시 제어 헤더를 설정하는 방법을 찾고 있습니다. 이것을 달성할 수 있는 방법이 있나요?

답변1

더 안전한 방법(개발자가 파일 확장자를 설정할 때 실수를 할 수 있기 때문에 Content-Type)은 실제를 기반으로 헤더를 설정하는 것입니다 Content-Type.

<IfModule mod_headers.c>
  Header set Cache-Control "max-age=300, public" "expr=%{CONTENT_TYPE} =~ m#text/html#i"
</IfModule>

답변2

브라우저는 그것이 text/html MIME 유형 문서인지 알기 위해 .html 확장자를 볼 필요가 없습니다. 헤더가 문서가 실제로 MIME 유형 text/html이라는 것을 클라이언트 브라우저에 브로드캐스팅하는 한, 다음과 같이 하면 문제가 없습니다.

ExpiresByType text/html "access plus 300 seconds"

"그 나름의 단점이 있다"는 부분에 대해 자세히 설명해 주시면 그 부분에 대해서도 언급해 드릴 수 있을 것 같습니다.

답변3

mod_expires를 사용할 수 없으므로 대신 mod_headers를 사용할 수 있습니다.http://httpd.apache.org/docs/2.2/mod/mod_headers.html.

헤더와 결합된 filesMatch를 사용할 수 있습니다.

<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=300, public"
</filesMatch>

관련 정보