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 不一样,浏览器会要求输入带有查询字符串的那个,您的新设置将被应用!
对此进行测试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 不一样,浏览器会要求输入带有查询字符串的那个,您的新设置将被应用!