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

时间:2015-05-10 14:51:37

标签: apache .htaccess mod-expires

测试此网址 http://getapple.net/phpbb/banners.js

返回304,文件未修改。

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

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

ExpiresByType application/javascript "access 1 month"

然后重启apache。

但该文件仍然从缓存中加载。 (Chrome浏览器中的响应标题返回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

我不知道自己做错了什么。请建议如何通过网址获取我的文件的更新版本。

非常感谢。

1 个答案:

答案 0 :(得分:2)

当您向浏览器发送Expires标头时,它将缓存您的响应,并仅在过期日期过后检查更新的版本。由于浏览器无法检查更新的版本,因此更改服务器设置不会影响浏览器的缓存数据。如果您在脚本中犯了一些错误或者有更新,则可以使用查询字符串强制浏览器询问您的脚本。

假设这是您当前的脚本:

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

您需要做什么:

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

由于网址不一样,浏览器会询问带查询字符串的网址,并会应用您的新设置!