установить заголовок управления кэшем на основе типа содержимого в 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

Браузеру не нужно видеть расширение .html, чтобы знать, что это документ типа mime text/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>

Связанный контент