Http Cache-Control,http头部已经设置了
http response
chrome中的通信情况
------20:01更新-------
又在response的header里面设置了etag和last-modified,但缓存还是没有用。
我是在chrome地址栏点网址回车,来重新发送请求的;此外我也试了chrome上的刷新按钮,也是一样,request header中都自带了max-age=0
更新后的http request
更新后的http response
更新后的chrome通信情况
Answers
request中带有Cache-Control:max-age=0,代表强制要求服务器返回最新的文件内容,关于max-age=0在request和response中的不同意义,可以参见这个stackoverflow上的问答 What's the difference between Cache-Control: max-age=0 and no-cache? 中的介绍,其中要点就是:如果max-age=0出现在请求中,则代表浏览器要求服务器,此次请求必须重新返回最新文件(请求完成后,你会看到http状态码是200);如果max-age=0出现在响应中,则代表服务器要求浏览器你在使用本地缓存的时候,必须先和服务器进行一遍通信,将etag、 If-Not-Modified等字段传递给服务器以便验证当前浏览器端使用的文件是否是最新的(如果浏览器用的是最新的文件,http状态码返回304,服务器告诉浏览器使用本地缓存即可;否则返回200,浏览器得自己吧文件重新下载一遍)。
回到你刚才的问题,由于你的request中有max-age=0,所以强制服务器重新返回文件了,这种情况一定是你的disable cache功能打开了,即这个位置:
把这个位置的选项勾掉即可。
还有就是检查这个区域:
确保这个区域也没有勾上。
如果这两项都没有勾上,那就不知道是什么原因了,换一个浏览器试一下。