2

测试这个网址 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

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

非常感谢。

4

1 回答 1

2

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

假设这是您当前的脚本:

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

你需要做什么:

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

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

于 2015-05-10T15:17:18.670 回答