缓存技术-Cache-Control在浏览器端的处理逻辑
http输出了cache-control了,
但是浏览器刷新后,request headers中有这么一句:
Cache-Control:max-age=0
按照http的协议,我第一次设置了cache-control之后,浏览器在这个时间间隔内就应该不再和服务器进行通信了,但是发现貌似我设置了cache-control之后,浏览器并没有保存这个信息。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
max-age=0,既可以出现在请求头中,也可以出现响应头中,但是在这两种场景中的含义确实不同的。
如果出现在请求头中,则告诉服务器,这次请求的数据不使用缓存,要重新下载,这时候如果请求成功,那么返回码应该是200.
如果出现在响应头,则是告诉客户端,如果当前请求成功,则缓存文件在本地,但是在下次请求的时候,不能直接使用当前缓存的文件,必须去服务器端询问一下。询问的依据就是
If-Modified-Since
请求头或者If-None-Match
,If-Modified-Since代表的是文件的修改时间,If-None-Match的值可以理解为文件的签名,如果服务器端认为这两项数据没有过期,那么就返回304,告诉客户端使用缓存就行,如果过期了,就返回200,并且返回当前请求文件内容。那么请求头If-Modified-Since
和If-None-Match
是怎么来的呢,他就是客户端在第一次请求时返回响应头的Date
和ETag
字段。