阅读此处后,我把以下代码块放在我的apache2.conf
:
<ifmodule mod_expires.c>
<Filesmatch "\.(jpg|jpeg|png|gif|js|css|swf|ico|woff|mp3)$">
ExpiresActive on
ExpiresDefault "access plus 2 days"
</Filesmatch>
</ifmodule>
然后我重启了 Apache,清除了所有 CMS 缓存,然后运行GPI 测试,我仍然收到以下错误,表明该模块不起作用:
利用浏览器缓存
在 HTTP 标头中为静态资源设置到期日期或最大使用期限,指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。
我认为原因是mod_cache
没有打开,所以我这样做了a2enmod cache
,然后在我的站点的 Vhost 中粘贴了以下代码并重新启动了 Apache。这也没有帮助,我仍然在 GPI 中收到相同的错误:
CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheLockMaxAge 5
CacheIgnoreHeaders Set-Cookie
</VirtualHost>
我的问题是启用 mod_expires 可能缺少什么,为什么它不起作用?
答案1
该expires
模块需要该headers
模块才能工作。
sudo a2enmod headers
sudo service apache2 reload
除此之外,您的配置看起来不错。
但是为了阻止 PageSpeed Insights 抱怨,您只需将资源的到期时间从 2 天增加到大于或等于 7 天的值。
您只需修改以下行:
ExpiresDefault "access plus 2 days"
对于静态资产或不经常更改的资产,我们建议最短缓存时间为一周,最好为一年。