【发布时间】:2015-03-15 14:35:05
【问题描述】:
我有一个缓存问题。 Chrome 并不总是加载较新版本的站点资源,通常是由 Require.js 加载的 Javascript 文件。现在,我在使用特定文件时遇到这个问题已经超过 24 小时了。
如果我在打开 devtools(网络选项卡)的情况下加载页面,有问题的文件通常会显示 HTTP 200 响应,但在“大小”列中会显示“(来自缓存)”。在标题详细信息中,它显示“显示临时标题”。 Wireshark 显示该文件确实没有从服务器请求。
Chrome 将文件的 Last-Modified 日期显示为 Sat, 06 Dec 2014 01:27:55 GMT,但我对服务器的以下原始请求清楚地表明该文件最近发生了变化。
如果我自己执行原始请求,我在服务器返回的标头中看不到任何会导致此问题的内容:
GET /js/path/to/file.js HTTP/1.1
Host: static.mydomain.com
User-Agent: Matt
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Vary: Accept-Encoding
Content-Type: application/javascript
Accept-Ranges: bytes
ETag: "4203477418"
Last-Modified: Fri, 16 Jan 2015 18:28:30 GMT
Content-Length: 5704
Date: Fri, 16 Jan 2015 21:05:06 GMT
Server: lighttpd/1.4.33
.... data here ...
chrome 用户在使用不同版本的 chrome 的多个操作系统上报告了该问题,但我通常不会收到其他浏览器缓存问题的报告。 (现在我在“Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36”)
编辑: 这个问题似乎对 Require.js 加载的文件最令人反感,尽管我也遇到过页面中直接引用的 javascript。
我在这里缺少什么?为什么 chrome 不检查文件的新版本?
【问题讨论】:
标签: google-chrome http caching google-chrome-devtools