根据 apache 中的内容类型设置缓存控制标头

根据 apache 中的内容类型设置缓存控制标头

我们正在尝试设置 Cache-Control 标头:max-age=300,对我们所有公共网站页面公开。要使用 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 扩展名就可以知道它是 text/html mime 类型文档。只要标头向客户端浏览器广播该文档确实是 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 与 header 结合使用

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

相关内容