在 apache2.conf 中启用 mod_expires 后,该 mod_expires 将不起作用

在 apache2.conf 中启用 mod_expires 后,该 mod_expires 将不起作用

阅读此处后,我把以下代码块放在我的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"

来自PageSpeed Insights 文档

对于静态资产或不经常更改的资产,我们建议最短缓存时间为一周,最好为一年。

相关内容