强缓存和协商缓存

强缓存和协商缓存

强缓存是浏览器对之前请求过的文件进行缓存,以便下一次访问的时候重复使用节省带宽。强制缓存的工作原理是通过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文件。这些资源的变更频率较低,因此可以设置较长的缓存时间,以提高加载速度并减少服务器压力。协商缓存则适用于那些可能被频繁更新的资源,通过服务器的验证确保用户能够获取最新的资源内容。

相关推荐
晚风吹人醒.3 小时前
缓存中间件Redis安装及功能演示、企业案例
linux·数据库·redis·ubuntu·缓存·中间件
ttod_qzstudio4 小时前
深入理解 Vue 3 的 h 函数:构建动态 UI 的利器
前端·vue.js
_大龄4 小时前
前端解析excel
前端·excel
一叶茶4 小时前
移动端平板打开的三种模式。
前端·javascript
前端大卫4 小时前
一文搞懂 Webpack 分包:async、initial 与 all 的区别【附源码】
前端
Want5955 小时前
HTML音乐圣诞树
前端·html
老前端的功夫5 小时前
前端浏览器缓存深度解析:从网络请求到极致性能优化
前端·javascript·网络·缓存·性能优化
Running_slave6 小时前
你应该了解的TCP滑窗
前端·网络协议·tcp/ip
程序员小寒6 小时前
前端高频面试题之CSS篇(一)
前端·css·面试·css3
颜酱6 小时前
Monorepo 架构以及工具选型、搭建
前端·javascript·node.js