首页 > 解决方案 > 在 apache 中缓存版本控制的 CSS 文件

问题描述

我看过很多关于如何使用 mod_expire 成功控制 css 和其他静态文件的缓存的帖子。

然而,我们的应用程序使用版本作为查询字符串来破坏过时 css 的缓存,例如 stylesheet.css?v=2.1

我根据需要进行了所有配置并重新启动了应用程序,但我仍然看到浏览器正在尝试从服务器获取 css。我没有看到这些文件类型的 304。

我什至尝试更改 vhost 文件中的文件模式以匹配它:(但仍然没有 304。

有什么我想念的吗?

编辑

<IfModule mod_expires.c>
<FilesMatch "\.(jpe?g|png|gif|js|css)$">
    ExpiresActive On
    ExpiresDefault "access plus 30 day"
</FilesMatch>

这是在 vhost 文件中。

我还尝试将正则表达式模式替换为 \.(jpe?g|png|gif|js|css).*

我知道我会打破未来的版本,但我不得不尝试一下。

其中一个 CSS 的 http 标头是

accept-ranges: bytes
access-control-allow-origin: *
cache-control: max-age=2592000
content-length: 2572
content-type: text/css
date: Sat, 06 Mar 2021 04:13:26 GMT
etag: "a0c-5bc3f3f07f180"
expires: Mon, 05 Apr 2021 04:13:26 GMT
last-modified: Fri, 26 Feb 2021 15:51:50 GMT
server: Apache/2.4.46 (Amazon) PHP/7.2.34

我看到设置了到期,但有趣的是状态码是 200,不应该是 304 吗?

标签: wordpressapacheapache2mod-expires

解决方案


推荐阅读