关于浏览器缓存控制的疑惑,望大神解答
例如我有一张图片,原图地址:qiniu.com/demo.jpg
然后我通过百度CDN进行分发,分发地址:baiducdn.com/demo.jpg
我在本地网页中使用它:<img src="baiducdn.com/demo.jpg">
当我在chrome控制台进行调试的时候(没有禁用缓存),该图片的的头信息总是:Status Code:200 OK
,完整的头信息如下:
Accept-Ranges:bytes
Access-Control-Allow-Origin:*
Access-Control-Expose-Headers:X-Log, X-Reqid
Access-Control-Max-Age:2592000
Cache-Control:max-age=31536000
CF-RAY:2ac289756cd938b9-FUO
Content-Length:9088859
Content-Transfer-Encoding:binary
Content-Type:image/gif
Date:Wed, 01 Jun 2016 12:06:00 GMT
ETag:"AFdd89ifx09ywWfdEa2rJT4R--Ax"
Expires:Thu, 01 Jun 2017 12:05:57 GMT
Last-Modified:Thu, 26 May 2016 09:36:33 GMT
Server:yunjiasu-nginx
X-Cache-Lookup:Hit From Upstream, Hit From Upstream, Hit From Upstream
X-Daa-Tunnel:hop_count=2, hop_count=1
X-Log:mc.g;FOPDC/404;FOPAGENT;IMAGE:659;FOPAGENT:675;dc.set:153;FOPDC:153;FOPDC;FOPDC;FOPG:833;io.rop:834;IO:836
X-Qiniu-Zone:0
X-Reqid:M7sAAG2y7Kgo9FMU
然后我有3个疑问,困扰我很久:
图片瞬间载入,应该是已缓存到本地,但为什么调试时Status Code是200
如果图片已经缓存到本地,那电脑处于离线状态时,图片为什么显示不出来?也就是说为什么不直接在本地加载
如果是服务器端通过ETag控制缓存,那么Status Code为什么是200而不是304?
希望大神能解惑,非常感谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果是200(from cache),说明使用的是本地缓存(浏览器没有发送request请求)
如果是304,说明是服务器只返回了304状态码(内容没有发生修改,这时浏览器发送了请求,但服务器并没有返回内容)