当前位置:网站首页>对强缓存和协商缓存的理解
对强缓存和协商缓存的理解
2022-06-29 18:08:00 【Spongebob_nut】
缓存是指代理服务器或客户端磁盘内保存的资源副本。利用缓存可减少对服务器的访问,因此也就节省了通信流量和通信时间。
浏览器缓存是为了节约资源,并且可以加速浏览网站的速度,当用户第一次访问网页的时候,浏览器在用户磁盘上对请求的文档进行保存,当第二次访问的时候,就会从本地直接显示,从而提高了页面的访问速度。
浏览器缓存的优点:
- 减少了冗余的数据传输,节省了网费;
- 减少了服务器的负担,大大提升网站的性能;
- 加快客户端加载网页的速度;
浏览器缓存分为强缓存和协商缓存。
- 浏览器进行资源请求时,会判断请求头是否命中强缓存,如果命中,直接从本地读取缓存,不会向服务器发送请求。
- 当强缓存没有命中时,会发送请求到服务端,判断协商缓存是否命中,如果命中,服务器将请求返回,不会返回资源,告诉浏览器从本地读取缓存;如果不命中,则服务器直接返回资源。
区别:
强缓存命中,不会请求服务器,直接请求缓存;协商缓存命中,会请求服务器,不会返回内容,然后读取缓存。
from memory cache 和 from disk cache 的区别:
from memory cache:字面理解是从内存中,这个资源是直接从内存中拿到的,不会请求服务器,一般是已经加载过该资源且缓存在了内存中,当关闭该页面时,该资源就被内存释放掉了,再次重新打开相同页面是,不会出现 from memory cache 的情况。
from disk cache:这个资源是从磁盘当中取出的,也是在之前的某个时间加载过该资源,不会请求服务器,但是此资源不会随着该页面的关闭关闭而释放掉,因为此资源是存在硬盘中的,下次打开仍会from disk cache。
一、强缓存
强缓存,利用HTTP的返回头中的expires和cache-control两个字段来控制,用来表示资源的缓存时间(缓存的有效期)。
这种方法会有一个固定时间,但是如果服务器数据进行了更新,而强缓存的有效期还没有过期的话,则数据无法更新。
Expires
该字段是http1.0时的规范,它的值是GMT格式的绝对时间,浏览器进行第一次请求时,服务器会在返回头部加上Expires,下次请求,如果在这个时间之前就命中缓存。
Cache-Control
该值是利用max-age判断缓存的生命周期,是以秒为单位,如果在生命周期时间内,则命中缓存。
二、协商缓存
协商缓存,由服务器来确定缓存资源是否可用,所以客户端与服务端要通过某种标识来进行通信,从而让服务器判断请求资源是否可以缓存访问。
利用 Last-Modified,If-Modified-Since 和 ETag,If-None-Match 来实现。
Last-Modified,If-Modified-Since
Last-Modified:表示为实体头部部分,response返回,表示资源的最后更新时间;
If-Modified-Since:通过比较两次的时间来判断资源在请求期间是否有修改,如果没有修改,则命中协商缓存,浏览器从缓存中读取资源,如果没有命中,资源有修改过,则返回新的Last-Modified时间和服务器资源。
ETag,If-None-Match
某些情况下仅判断最后修改日期来验证资源是否改动是不够的的:
- 存在周期性重写某些资源,但资源实际包含的内容并无变化;
- 被修改的信息并不重要,如注释等;
- Last-Modified 无法精确到毫秒,但有些资源更新频率有时会小于一秒。
ETag:为响应头部字段,表示资源内容的唯一标识,随服务器response返回;
If-None-Match:服务器比较请求头中的 If-None-Match 和当前资源中的 etag 是否一致,来判断资源是否修改过,如果没有修改,则命中缓存,浏览器从缓存中读取资源,如果修改过,服务器会返回新的etag,并返回资源。
浏览器第一次请求时:
浏览器在后续进行请求时:
强缓存和协商缓存的区别:
缓存类型 | 获取资源形式 | 状态码 | 发送请求到服务器 |
---|---|---|---|
强缓存 | 从缓存取 | 200(from cache) | 否,直接从缓存获取 |
协商缓存 | 从缓存取 | 304(Not Modified) | 是,通过服务器来告知缓存是否可用 |
边栏推荐
- Adobe Premiere基础-编辑素材文件常规操作(脱机文件,替换素材,素材标签和编组,素材启用,便捷调节不透明度,项目打包)(十七)
- Lodash deep copy usage
- Adobe Premiere Foundation - réglage du son (correction du volume, réduction du bruit, tonalité téléphonique, changement de hauteur, égaliseur de paramètres) (XVIII)
- data-*属性用法
- It's really easy to make money in foreign lead and build a website
- JDBC Codes connexes
- [wangdingbei 2020 Qinglong formation]areuserialz
- 面试题 10.10. 数字流的秩
- 【TcaplusDB知识库】TcaplusDB单据受理-创建游戏区介绍
- Niuke small Bai monthly race 52 D ring insectivorous (feet +st table)
猜你喜欢
JWT login authentication
Servlet student management system (Mengxin hands-on version)
Let Google search your blog
idea怎么使用?
Xiaomai technology x hologres: high availability of real-time data warehouse construction of ten billion level advertising
Servlet学生管理系统(萌新练手版)
Niuke small Bai monthly race 52 D ring insectivorous (feet +st table)
JDBC Codes connexes
美法官裁定,被控掩盖黑客行为的Uber前安全主管必须面对欺诈指控
山东大学项目实训(六)点击事件展示折线图
随机推荐
Know that Chuangyu has helped the energy industry in asset management and was selected into the 2021 IOT demonstration project of the Ministry of industry and information technology
[tcapulusdb knowledge base] tcapulusdb operation and maintenance doc introduction
第八届“互联网+”大赛 | 云原生赛道邀你来挑战
Adobe Premiere foundation - material nesting (animation of Tiktok ending avatar) (IX)
Workflow module jar package startup error: liquibase – waiting for changelog lock
Sister Juan takes you to learn database -- 5-day sprint Day1
Goldfish rhca memoirs: do447 building advanced job workflow -- using fact cache to improve performance
数据分析--时间序列预测
Us judge ruled that the former security director of Uber accused of covering up hacking must face fraud charges
Kubekey2.2.1 kubernetes1.23.7 offline package production +harbor Department summer and upload image
等保测评结论为差,是不是表示等保工作白做了?
2022.6.29-----leetcode.535
Markdown common fonts
MySQL数据库每日备份并定时清理脚本
【TcaplusDB知识库】TcaplusDB单据受理-建表审批介绍
Adobe Premiere基础-素材嵌套(制作抖音结尾头像动画)(九)
Cannot retrieve repository metadata processing records
Cannot retrieve repository metadata 处理记录
Adobe Premiere基础-不透明度(蒙版)(十一)
3H proficient in opencv (VI) - image stacking