前言
今天做项目的时候遇到一个问题,就是在ie11中 新增一条新的消息后页面刷新后,并没有看到新增的消息,于是打开控制台发现
304 Not Modified 加时间戳没用
于是赶紧联系后台大佬能不能把cache-control改成Cache-Control:no-cache试试
然而并没什么卵用,然后自己研究。
浏览器缓存机制
- 当前缓存是否过期?
- 服务器中的文件是否有改动?
如何判断缓存的过期以及文件的变动?
主要的方式有两种,这两种都是设定请求头中的某一个字段来实现的: 1、Expires; 2、Cache-Control。由于Cache-Control设置后优先级比前者高,这次作者就先说下通过Cache-Control来控制缓存。
常见取值: no-cache
如果request headers中,Cache-Control为no-cache。表示不管服务端有没有设置Cache-Control,都必须从重新去获取请求。
max-age=xxx:缓存的内容将在 xxx 秒后失效
max-age=0
max-age=0表示不管response怎么设置,在重新获取资源之前,先检验ETag/Last-Modified
不管是max-age=0还是no-cache,都会返回304(资源无修改的情况下),no-store才是真正的不进行缓存。
private: 客户端可以缓存(默认)
public: 客户端和代理服务器都可缓存(前端的同学,可以认为public和private是一样的)
no-store: 所有内容都不会缓存,强制缓存,对比缓存都不会触发(对于前端开发来说,缓存越多越好,so...基本上和它说886
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)