Apache 仍然从缓存加载甚至禁用 mod_expires

Apache still load from cache even disable mod_expires

对此进行测试url http://getapple.net/phpbb/banners.js

它return304,文件未修改。

我曾经启用插件"mod_expires"并设置js缓存1个月

但现在我想重新设置规则。我试着评论这一行

ExpiresByType application/javascript "access 1 month"

然后重启apache。

但是文件仍然从缓存中加载。 (在 Chrome 浏览器中响应 Header return 304)

但是在我运行这个

之后
curl -I http://getapple.net/phpbb/banners.js

在命令行中,结果是

HTTP/1.1 200 OK
Date: Sun, 10 May 2015 14:51:59 GMT
Server: Apache/2.4.7 (Ubuntu)
Last-Modified: Sun, 10 May 2015 14:34:14 GMT
ETag: "9dd2-515bb27cf250a"
Accept-Ranges: bytes
Content-Length: 40402
Vary: Accept-Encoding
Content-Type: application/javascript

我不知道我做错了什么。请建议如何通过 url.

获取我的文件的更新版本

非常感谢。

当您将 Expires header 发送到浏览器时,它会缓存您的响应并仅在过期日期过后检查更新版本。由于浏览器不会检查更新版本,因此更改服务器设置不会影响浏览器的缓存数据。如果您的脚本有误或有更新,您可以使用查询字符串强制浏览器请求您的脚本。

假设这是您当前的脚本:

<script src="http://getapple.net/phpbb/banners.js" ></script>

您需要做的事情:

<script src="http://getapple.net/phpbb/banners.js?v=20150510" ></script>

由于 URL 不一样,浏览器会要求输入带有查询字符串的那个,您的新设置将被应用!