如何在PHP + Apache中设置expires头?我目前正在使用auto_prepend来提供资源gzip,但我也想最大化HTTP缓存。
我该如何设置?
答案 0 :(得分:112)
有两种方法可以做到这一点。第一种是在PHP代码中指定标题。如果您想以编程方式调整到期时间,这很好。例如,维基可以为不经常编辑的页面设置更长的到期时间。
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
答案 1 :(得分:2)
这个Apache模块可能有所帮助: http://httpd.apache.org/docs/2.0/mod/mod_expires.html
答案 2 :(得分:0)
你尝试过类似的东西吗?
<?php
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
?>