强缓存和协商缓存

强缓存和协商缓存

强缓存是浏览器对之前请求过的文件进行缓存,以便下一次访问的时候重复使用节省带宽。强制缓存的工作原理是通过http响应头中的特定字段来控制的,包括expires cache-control 指示了资源的缓存有效时间,当浏览器在有效时间内请求统一资源的时候,会直接从本地缓存中获取资源,并不会向服务器发起请求。

协商缓存是浏览器与服务器之间进行通信以确认资源是否任然有效的过程涉及到了etag 和if-none-match,以及last-modified和if-modified-since。Etag和ifnonematch 当浏览器第一次请求这个资源的时候,服务器会返回一个etag,是资源版本的唯一标识符。浏览器在后续请求该资源的时候,会在请求头中携带ifnonematch字段,值为接受到的etag。服务器会根据这个值来判断资源是否更新,如果有更新,服务器会返回新的资源和新的etag,如果没有更新,则返回304 告诉浏览器中可以使用缓存中的资源。

Last modified if modified since 类似于etag机制,但是last-modified记录的是资源最后修改的时间,会在请求头中携带ifmodified since字段,这个值为先前接收到的lastmodified ,会检查最后修改的时间是否在这个时间之后,如果是,说明资源有更改,返回最新的资源,如果不是,服务器返回304状态码。

在浏览器加载资源的时候,会检查强缓存是否命中,如果强缓冲有资源的副本,并且没有过期,则直接使用。不会发送http请求到服务器,只有当强缓冲未命中或者资源已经过期的时候,浏览器才会进行协商缓冲。

应用场景:强制缓存适用于不经常变动的静态资源,如图片、CSS和JavaScript文件。这些资源的变更频率较低,因此可以设置较长的缓存时间,以提高加载速度并减少服务器压力。协商缓存则适用于那些可能被频繁更新的资源,通过服务器的验证确保用户能够获取最新的资源内容。

相关推荐
Dovir多多19 分钟前
渗透测试入门学习——php文件上传与文件包含
前端·后端·学习·安全·web安全·php
weixin_4410183529 分钟前
webpack的热更新原理
前端·webpack·node.js
Adolf_199335 分钟前
Flask 设置session 自定义登录验证
服务器·前端·flask
day3ZY1 小时前
清理C盘缓存的垃圾,专业清理C盘缓存垃圾的步骤与策略
缓存
范特西是只猫2 小时前
echarts 自定义标注样式&自定义tooltip弹窗样式
前端·javascript·echarts
JohnsonXin3 小时前
【兼容性记录】video标签在 IOS 和 安卓中的问题
android·前端·css·ios·h5·兼容性
建群新人小猿3 小时前
CRMEB Pro版 DIY功能玩法即将升级,先来一睹为快!
前端·javascript·html
api774 小时前
1688商品详情API返回值中的售后保障与服务信息
java·服务器·前端·javascript·python·spring·pygame
赵广陆4 小时前
SprinBoot+Vue门诊管理系统的设计与实现
前端·javascript·vue.js·spring boot·maven
华山令狐虫5 小时前
el-tabs 样式修改
前端