我在一个网站上工作,一旦完成 js 文件和图片可能几周、几个月甚至几年都保持不变,谁知道呢。所以我认为如果我可以指示浏览器下载并忘记,我可以获得巨大的性能提升,也就是说:如果文件已经在本地缓存中,不管其他任何东西,检索并使用该版本,所以文件的唯一方法是如果用户清除浏览器的缓存,将被下载两次。这显然意味着一个承诺,因为如果我的网站中的某些内容发生更改,我也将被迫更改受影响文件的名称,但具有能够在我需要时覆盖浏览器本地缓存的巨大优势或想要,获得对它的完全控制,快速,简单并且浪费零带宽和 CPU 周期。
我试图通过将正确的缓存命令添加到 HTTP 响应标头来实现这一点。这是一个示例:
HTTP/1.1 200 OK
Connection: Keep-Alive
Date: Sat, 27 Jul 2013 02:24:05 GMT
Content-Type: application/x-javascript
Content-Encoding: gzip
Content-Length: 13728
Last-Modified: Sat, 27 Jul 2013 00:37:59 GMT
ETag: "20130726193759"
Expires: Sat, 26 Jul 2014 05:00:00 GMT
Cache-Control: public, max-age=31536000
正如您可能意识到的那样,我正在指示浏览器将文件保存在其缓存中一整年。但我不知道我是否做错了什么,因为桌面浏览器仍然使用If-None-Match参数发出文件请求,在这种情况下,我只是告诉他们文件没有改变,这是次优的,但Android浏览器的情况更糟,因为它发出的请求就像是第一次一样。
谁能告诉我我做错了什么???