常见四种和缓存相关的首部

版权声明:本文为博主原创文章,未经博主允许请尽情转载。 https://blog.csdn.net/yanghuan313/article/details/52724661

第一种:Last-Modified/If-Modified-Since

如果在服务器设置一个响应头 Last-Modified:该资源的更新时间,然后浏览器收到这个响应头以后,下次再请求这个资源的时候,会带上请求头 If-Modified-Since:上次从服务器缓存该资源的时间。服务器收到这个请求头以后会将两个时间点进行判断,如果服务器的时间更新,那么返回完整的响应数据,状态码为200,反之则只返回一个状态码为304的响应头域。

有个相对的首部为 If-Unmodified-Since

第二种:ETag/If-None-Match

同理服务器返回给浏览器的响应头 ETag:文件标识符 ,浏览器收到后下次会发送一个请求头 If-None-Match:值为收到的ETag ,服务器会判断两个值是否相等,结果同上。

有个相对的首部为 If-Match

第三种:Expires

Expires:缓存时间 是由服务器设置的响应头,它告诉浏览器到什么时间缓存的副本失效。

第四种:Cache-Control

这个响应头有四个值,分别为:public(可以公开被缓存的文档),private(代理服务器不能缓存),no-cache(可以缓存但不能重用,意思是可以在浏览器“前进”“后退”时使用,真正加载时不可用),no-store(不允许缓存),前两个头可以和max-age以及must-revalidate一起使用。
如Cache-Control: max-age=3600 表示一小时内副本都是新鲜的。
而Cache-Control: must-revalidate 表示严格执行缓存新鲜度检查。

请求头有如下值:
Cache-Control: max-stale 缓存随意提供过期的文件
Cache-Control: max-stale=x(s) 这段时间内,文档不过期
Cache-Control: min-fresh=x(s) 至少时间内,文档必须保持新鲜
Cache-Control: max-age=x(s) 最多缓存的时间
Cache-Control: no-cache 不接受已缓存资源
Cache-Control: no-store 从存储器中删除文档所有痕迹
Cache-Control: only-if-cached 只有当缓存中有副本时,才获取

当我们点击Refresh(刷新)按钮时,浏览器会对请求添加一个Cache-Control的首部,强制进行再验证,或者直接从服务器获取文档,但这个会随浏览器的行为而定。

猜你喜欢

转载自blog.csdn.net/yanghuan313/article/details/52724661