安装HTTP使用PHP和Apache过期标头

Tom*_*Tom 55 php apache performance http

如何在PHP + Apache中设置expires头?我目前正在使用auto_prepend来提供资源gzip,但我也想最大化HTTP缓存.

我该如何设置它们?

bri*_*gge 114

有两种方法可以做到这一点.第一种是在PHP代码中指定标题.如果您想以编程方式调整到期时间,这很好.例如,维基可以为不经常编辑的页面设置更长的到期时间.

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

您的第二选择是创建.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>
Run Code Online (Sandbox Code Playgroud)

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

  • 标题追加Cache-Control"public"=>此行给出了500内部服务器错误. (3认同)
  • 请注意,您可以使用`gmdate('r')`,它提供有效的RFC 2822表示. (2认同)