【优化】强缓存和协商缓存

强缓存和协商缓存是HTTP缓存机制中的两种主要方式,它们都可以有效地提高网页的加载速度,减少网络带宽的消耗,但它们的工作原理和适用场景有所不同。

强缓存

  • 工作原理:当客户端首次请求资源时,服务器会返回带有缓存控制信息的响应头,如Cache-Control或Expires。这些信息告诉客户端可以在一定时间内直接使用本地缓存而不需要向服务器发起请求。
  • 常见的响应头:
    • Cache-Control:使用max-age指定资源的最大缓存时间,例如Cache-Control: max-age=3600表示资源在3600秒内有效。
    • Expires:指定资源的过期时间,是一个GMT格式的日期字符串,如Expires: Wed, 29 Feb 2024 12:00:00 GMT。
  • 特点:在缓存未过期的情况下,浏览器将直接使用本地缓存,不会发送请求到服务器。这样可以大大减少网络传输,提高页面加载速度和服务性能。

协商缓

  • 工作原理:当客户端再次请求资源时,它会发送一个请求头,如If-Modified-Since或If-None-Match,携带上一次请求时服务器返回的相关信息。服务器根据这些信息判断是否需要返回新的资源,或者告诉客户端直接使用本地缓存。
  • 常见的请求头:
    • If-Modified-Since:携带上一次请求时服务器返回的Last-Modified时间。
    • If-None-Match:携带上一次请求时服务器返回的ETag值。
  • 响应状态码:
    • 304 Not Modified:如果资源没有发生变化,服务器会返回这个状态码,告诉浏览器可以使用缓存。
    • 200 OK:如果资源已经更新,服务器会返回新的资源以及新的Last-Modified和ETag值。
  • 特点:协商缓存可以有效地避免重复加载网页资源,提高网页加载速度,减少服务器压力。但相对于强缓存,它需要发送请求到服务器进行验证,因此会有一定的网络传输开销。

总结来说,强缓存和协商缓存各有优缺点。强缓存可以在缓存未过期的情况下直接使用本地缓存,减少网络传输开销;而协商缓存则需要与服务器进行验证以确定是否使用缓存。在实际应用中,可以根据具体需求和场景选择适合的缓存策略。

相关推荐
蜗牛互联网7 小时前
HSTU在Dynamo-Triton中的AOTI与KV缓存验收方法
java·人工智能·后端·缓存
hweiyu0017 小时前
Redis命令:HMGET
redis·缓存
陕西企来客1 天前
豆包检索层 9 月迭代后信源陈旧的核心 —— 缓存策略的可用性优先转向
缓存
三掌柜6661 天前
ArkWeb 手记 07|缓存和离线页怎么做
缓存·harmonyos
wefg12 天前
【Redis】初识 Redis
数据库·redis·缓存
JosieBook2 天前
【数据库】MySQL 实战精通系列 · 第11篇:Redis 缓存与 MySQL 一致性实战
数据库·mysql·缓存
霸道流氓气质2 天前
AI应用成本优化完全指南:Token压缩、语义缓存与模型路由的Java生产级实战
java·人工智能·缓存
涵美女程序猿2 天前
ChatCut online 剪 CDN 回源演练录屏:域名、缓存键与回源点怎样对应
程序人生·缓存·电脑
蔚天灿雨2 天前
Agent 洗冤集录:前缀缓存 —— MCP 排序问题,如何影响模型调用的延迟与成本
人工智能·缓存·agent·harness
yexianglunbai2 天前
Redis 缓存详解:从原理到实战
数据库·redis·缓存