设置 HTTP 使用 PHP 和 Apache 使标头过期

2022-08-30 09:28:31

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

如何设置这些设置?


答案 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


答案 2

这个Apache模块可能会有所帮助:http://httpd.apache.org/docs/2.0/mod/mod_expires.html


推荐