浏览器缓存-从无知到理解

浏览器缓存-从无知到理解

技术杂谈小彩虹2021-07-10 19:21:5360A+A-

1、为什么浏览器要缓存

大致一想:浏览器缓存资源目的就是下次用的时候更快一些,用户更快打开页面。疑惑点:浏览器是怎么判断是否缓存某个文件,缓存多长时间等问题

2、http缓存分类

根据是否需要向服务器发送资源请求分为 强制缓存 和 协商缓存

强制缓存(控制字段)

HTTP1.0: Expires  

HTTP1.1: Cache-Control

如果Expires 和 Cache-Control 两个字段以 Cache-Control为主

如下图:

过程:请求第二次发起 ---- >浏览器根据Expires 和 Cache-Control 判断目标资源是否命中“强制缓存” ----> 如果命中,直接从缓存获取资源,不再与服务器请求资源

在HTTP/1.1中,Cache-Control主要取值为:

public:所有内容都将被缓存(客户端和代理服务器都可缓存)

private:所有内容只有客户端可以缓存,Cache-Control的默认取值

no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定

no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存

max-age=xxx (xxx is numeric):缓存内容将在xxx秒后失效

must-revalidate: 强制浏览器严格遵守你设置的cache规则

proxy-revalidate: 强制proxy严格遵守你设置的cache规则

协商缓存:

如果强制缓存失效,就要考虑协商缓存了,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程,两种情况:1、协商缓存生效,返回304 ;2、协商缓存失效返回200和请求结果。

协商缓存的控制字段

HTTP1.1: last-modified 服务器相应请求时,返回该资源文件在服务器最后被修改的时间

总结下,强制缓存和协商缓存的逻辑见

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1

联系我们