我正在尝试学习如何使用 .htaccess 来操作我的标题,并且用 Google 的话说,“利用浏览器缓存”来改善页面加载时间。我试验过的代码是这样的:
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
<FilesMatch "\.(js|css)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\.(html|php)$">
Header set Cache-Control "max-age=14400, public"
</FilesMatch>
出于某种原因,这导致整个网站抛出 500 错误。万一有什么不同,我很早就在 .htaccess 文件中插入了这段代码,在一些需要某些子域的密码和一长串 301 RewriteEngine 重定向的身份验证逻辑之前,因为这个网站最近进行了重组,而且很多的 URL 已更改。
你知道为什么这会导致错误吗?我或多或少地从博客中复制了代码并对其进行了编辑以满足我的需要。在我更新 .htaccess 文件后,500 错误也不会立即出现,这对我来说意味着错误是在 Apache 服务器的默认四小时缓存到期标头失效后开始的。
编辑 2012 年 10 月 17 日:
现在已经尝试添加和删除此代码几次,我已经确认标题可以正常工作,尽管时间很短。将 FireBug 与 PageSpeed 结合使用,我可以看到 max-age 设置已正确应用于文件。然后过了一段时间,正如我之前提到的,网站一直都变成了 500 个。
另一件值得注意的事情:我实际上是在尝试在受密码保护的测试子域上测试新标头,然后再将其推广到主站点。据我所知,由于某种原因,在更新了 SUBDOMAIN 上的 .htaccess 之后(它甚至用完了它自己的文件夹,与 /public_html/ 分开),主(www)站点中断了。
当我认为我正在更新测试子域时,可能是我做错了什么,或者不小心上传到了主站点,但我开始犹豫是否要为此在主站点上冒更多停机时间。