用于设置过期头的mod_expires替代方案是什么?

3
我正在使用Apache服务器上的php。由于它是共享服务器,我无法在.htaccess文件中设置过期标头,因为Web主机不会在apache构建中安装mod_expires模块。 我一直使用ExpiresActive On并在.htaccess文件中为图像、js、xml和文本文件设置默认缓存过期时间。 那么我的其他选择是什么? 谢谢。

你的主机没有安装 mod_expires 似乎很奇怪,因为它自从很久以前就已经随 Apache 捆绑安装了。我肯定会更换主机!!!即使是最便宜的共享 Web 托管服务现在也都安装了 mod_expires - Marco Demaio
2个回答

4
你可以使用 .htaccess 文件来实现,而无需使用 mod_expires。
<IfModule mod_headers.c>
  <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    Header set Expires "Wed, 15 Apr 2020 20:00:00 GMT"
    Header set Cache-Control "public"
  </FilesMatch>
</IfModule>

1
或者,使用 Header set Cache-Control "max-age=seconds"。因为你不应该将过期日期设置超过一天。max-age 更加灵活,不需要定期更新。秒数从访问时间开始计算。 - Daniel
抱歉,应该是“一年”。这个信息来源于W3C的缓存最佳实践。 - Daniel

1

有人可能提出一个 Apache 特定的解决方案,可以在没有模块的情况下工作。但作为最后的办法,如果没有其他方法,你可以通过 PHP 路由所有流量,并在那里输出头文件。但这意味着将每个资源都发送到 PHP 解释器,并且非常耗费资源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接