Мы пытаемся установить заголовок Управления Кэша: max-age=300, общественность ко всем нашим общедоступным страницам сайта. Для использования Filesmatch мои страницы приложения не имеют никаких расширений. ExpiresByType доступен, но он имеет свои собственные недостатки.
Я ищу способ установить заголовок управления кэшем на все мои страницы приложения с типом контента как текст/HTML. Там какой-либо путь состоит в том, чтобы достигнуть этого?
Браузеру не нужно видеть расширение .html, чтобы он знал, что это документ mime-типа text / html. Пока заголовок передает клиентскому браузеру, что документ действительно имеет тип mime text / html, это будет нормально:
ExpiresByType text/html "access plus 300 seconds"
Если вы уточните часть «имеет свои недостатки», мы, возможно, сможем прокомментировать это тоже.
Так как вы не можете использовать 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>
Более безопасный способ (поскольку разработчики могут ошибаться при установке Content-Type
для расширений файлов) - установить заголовок на основе фактического Content-Type
:
<IfModule mod_headers.c>
Header set Cache-Control "max-age=300, public" "expr=%{CONTENT_TYPE} =~ m#text/html#i"
</IfModule>