什么是强制缓存?什么是协商缓存?cache

强制缓存和协商缓存是用于在Web浏览器和服务器之间进行缓存控制的两种机制。

  1. 强制缓存(强缓存,强制缓存):
    强制缓存是通过设置HTTP响应头来实现的,它告诉浏览器在一定时间内直接使用缓存的副本,而不需要再向服务器发起请求。常见的强制缓存相关的响应头有两个:
    • Expires:指定一个绝对过期时间,即缓存将在该时间之后失效。
    • Cache-Control:通过设置max-age指令来指定一个相对过期时间,即缓存将在指定的秒数之后失效。

当浏览器发送请求时,会检查强制缓存相关的响应头信息。如果缓存仍然有效,浏览器将直接从缓存中读取资源,并且不会发送请求到服务器。这样可以显著提高页面加载速度,减少对服务器的访问。

  1. 协商缓存(协商缓存,条件缓存):
    协商缓存是在强制缓存失效的情况下进行的一种机制,用于验证缓存的有效性。当浏览器发现强制缓存失效时,它会向服务器发送一个附带条件的请求,以判断缓存是否仍然有效。服务器会根据请求的条件进行验证,并返回相应的状态码来指示缓存是否有效。

协商缓存相关的请求头和响应头有以下几个常见的:

  • If-Modified-Since / Last-Modified:浏览器在请求时发送If-Modified-Since头,将上次缓存的最后修改时间发送给服务器。服务器通过比较资源的最后修改时间来判断缓存是否有效,并返回相应的状态码(如304 Not Modified)。
  • If-None-Match / ETag:浏览器在请求时发送If-None-Match头,将上次缓存的ETag值发送给服务器。服务器通过比较资源的ETag来判断缓存是否有效,并返回相应的状态码。

如果服务器返回的状态码指示缓存仍然有效,浏览器将继续使用缓存的副本。如果缓存失效,服务器将返回新的资源内容,并带有新的缓存相关的响应头,浏览器将使用新的资源并更新缓存。

综合使用强制缓存和协商缓存可以有效地减少对服务器的请求,提高页面加载速度,并减轻服务器的负载。

相关推荐
GIS之路3 分钟前
ArcGIS Pro 中的 Notebooks 入门
前端
IT_陈寒1 小时前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
Kagol2 小时前
TinyVue 支持 Skills 啦!现在你可以让 AI 使用 TinyVue 组件搭建项目
前端·agent·ai编程
柳杉2 小时前
从零打造 AI 全球趋势监测大屏
前端·javascript·aigc
simple_lau2 小时前
Cursor配置MasterGo MCP:一键读取设计稿生成高还原度前端代码
前端·javascript·vue.js
睡不着先生2 小时前
如何设计一个真正可扩展的表单生成器?
前端·javascript·vue.js
天蓝色的鱼鱼3 小时前
模块化与组件化:90%的前端开发者都没搞懂的本质区别
前端·架构·代码规范
明君879973 小时前
Flutter 如何给图片添加多行文字水印
前端·flutter
leolee183 小时前
Redux Toolkit 实战使用指南
前端·react.js·redux
bluceli3 小时前
React Hooks最佳实践:写出优雅高效的组件代码
前端·react.js