一尘不染

安装HTTP使用PHP和Apache使标头失效

php

如何在PHP + Apache中设置到期标头?我目前正在使用auto_prepend服务压缩的资源,但我也想最大化HTTP缓存。

我该如何设置?


阅读 244

收藏
2020-05-29

共1个答案

一尘不染

有两种方法可以做到这一点。首先是在您的php代码中指定标头。如果您要以编程方式调整到期时间,那就太好了。例如,Wiki可以为不经常编辑的页面设置更长的过期时间。

header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // 1 hour

您的第二个选择是创建一个 .htaccess
文件或修改您的httpd配置。在共享托管环境中,修改.htaccess文件非常普遍。为此,您需要知道您的服务器是否支持 mod_expires
/mod_headers 。最简单的方法就是反复试验,但是将某些Apache服务器配置为允许您通过/ server-
info页面查看此信息。如果您的服务器同时具有mod_expires和mod_headers,并且您想在静态资源上设置到期时间,请尝试将其放入.htaccess文件中:

# Turn on Expires and set default to 0
ExpiresActive On
ExpiresDefault A0

# Set up caching on media files for 1 year (forever?)
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A29030400
Header append Cache-Control "public"
</FilesMatch>

有关其他组合和更多示例,请参见:http : //www.askapache.com/htaccess/speed-up-
your-site-with-caching-and-cache-
control.html

2020-05-29