强缓存和弱缓存

强缓存和弱缓存是Web开发中常用的两种缓存机制。

  1. 强缓存(Strong Cache)

    强缓存是指在浏览器发送请求前,先检查本地缓存中是否存在可用的资源副本。如果存在,并且该资源没有过期,服务器将返回一个特定的响应头,告诉浏览器直接使用本地缓存,而不需要向服务器发送请求。这样可以大大减少网络传输,提高页面加载速度和服务性能。

    常见的强缓存响应头有:

    • Expires:指定资源的过期时间,是服务器返回的绝对时间值。
    • Cache-Control:指定资源的缓存控制策略,可以设置max-age(相对时间)或者s-maxage(仅对共享缓存有效)。

    当浏览器再次请求相同的资源时,会根据缓存策略判断是否使用强缓存。如果缓存未过期,浏览器将直接使用本地缓存,不会发送请求到服务器。

  2. 弱缓存(Weak Cache)

    弱缓存是指在浏览器发送请求后,服务器会先验证该资源是否被修改过,如果未被修改,则返回一个特定的响应头,告诉浏览器可以使用本地缓存。但与强缓存不同的是,即使缓存过期了,浏览器仍然会向服务器发送一个请求进行验证。

    常见的弱缓存响应头有:

    • Last-Modified:指定资源的最后修改时间,是服务器返回的绝对时间值。
    • ETag:指定资源的唯一标识符,通常是根据资源内容生成的哈希值。

    当浏览器再次请求相同的资源时,会带上上次获取到的Last-Modified和ETag等信息,服务器会通过这些信息判断资源是否被修改过。如果未修改,则返回一个特定的响应头,告诉浏览器可以使用本地缓存。

总结:
  • 强缓存不需要与服务器交互,直接从本地缓存中获取资源,速度快。
  • 弱缓存需要与服务器交互,通过验证判断资源是否修改,如果未修改则使用本地缓存。
  • 强缓存的优先级高于弱缓存,即如果同时设置了强缓存和弱缓存的响应头,浏览器会首先检查强缓存是否可用。
  • 如果强缓存失效,浏览器会发送请求到服务器进行验证,如果通过验证,则服务器会返回新的资源给浏览器,并在响应头中携带新的缓存策略。
  • 弱缓存通常配合强缓存一起使用,用于提供更细粒度的缓存控制。
相关推荐
JosieBook1 小时前
【数据库】MySQL 实战精通系列 · 第11篇:Redis 缓存与 MySQL 一致性实战
数据库·mysql·缓存
霸道流氓气质2 小时前
AI应用成本优化完全指南:Token压缩、语义缓存与模型路由的Java生产级实战
java·人工智能·缓存
涵美女程序猿4 小时前
ChatCut online 剪 CDN 回源演练录屏:域名、缓存键与回源点怎样对应
程序人生·缓存·电脑
蔚天灿雨4 小时前
Agent 洗冤集录:前缀缓存 —— MCP 排序问题,如何影响模型调用的延迟与成本
人工智能·缓存·agent·harness
yexianglunbai4 小时前
Redis 缓存详解:从原理到实战
数据库·redis·缓存
逃逸线LOF4 小时前
Redis快速入门
数据库·redis·缓存
j7~4 小时前
【Redis初阶】(篇二)《一文吃透 Redis:特性、应用场景、版本演进与安装配置全解析》
数据库·redis·缓存·redis的特性·redis的主要应用场景·redis重要文件及其作用·安装并启动redis
夕除18 小时前
redis--RDB AOF
数据库·redis·缓存
ShineWinsu1 天前
对于Redis:Redis的认识以及分布式系统的解析
linux·数据库·c++·redis·缓存·消息队列·分布式架构
Wang's Blog1 天前
Java 项目实战: 外卖平台优化-使用Redis作为缓存产品与TTL配置
java·redis·缓存