浏览器强缓存和弱缓存的主要区别

浏览器强缓存与弱缓存

浏览器的缓存机制主要分为两种:强缓存与协商缓存(也称弱缓存)。

强缓存

强缓存是指浏览器在请求一个资源时,不与服务器发生通信,直接从本地缓存中获取资源。如果存在有效的强缓存,浏览器将完全跳过网络请求阶段,显著提升性能和加载速度。

实现方式

强缓存基于HTTP响应头中的特定字段来实现,主要包括:

  1. Cache-Control

    • 这是一种相对新鲜度策略,通过设置max-age指令来表明资源的有效期(单位为秒)。在此期间,浏览器无需向服务器验证资源是否已更新。
  2. Expires

    • 这是一种绝对时间戳策略,用于指定资源的过期时间。若当前时间未超过该时间点,浏览器将使用缓存。

弱缓存/协商缓存

当强缓存失效或不存在时,浏览器会发起网络请求,并携带缓存相关标识到服务器进行验证,询问服务器缓存的资源是否仍有效。这一过程称为协商缓存或弱缓存。

协商机制

协商缓存主要依赖以下HTTP头部信息:

  1. Last-Modified / If-Modified-Since

    • 服务器在返回资源时附带Last-Modified字段,表示资源最后修改的时间。下一次请求时,浏览器发送If-Modified-Since请求头,服务器根据这个时间判断资源是否有更新。若无更新,则返回304状态码及新的响应头(不含资源内容),浏览器继续使用本地缓存的资源。
  2. ETag / If-None-Match

    • 服务器返回资源时可能生成一个唯一标识符ETag。客户端再次请求时携带If-None-Match请求头,服务器依据ETag判断资源是否被修改。若无修改,同样返回304状态码及新的响应头,浏览器继续使用本地缓存。

总结而言,强缓存无需与服务器通信即可决定是否使用缓存,而弱缓存则需要通过与服务器的交互来确认缓存是否仍然有效。。

相关推荐
全栈凯哥14 分钟前
20.缓存问题与解决方案详解教程
java·spring boot·redis·后端·缓存
Hellyc7 小时前
用户查询优惠券之缓存击穿
java·redis·缓存
鼠鼠我捏,要死了捏9 小时前
缓存穿透与击穿多方案对比与实践指南
redis·缓存·实践指南
汤姆大聪明16 小时前
Redis 持久化机制
数据库·redis·缓存
kk在加油18 小时前
Redis数据安全性分析
数据库·redis·缓存
hcvinh2 天前
CANDENCE 17.4 进行元器件缓存更新
学习·缓存
墨着染霜华2 天前
Caffeine的tokenCache与Spring的CaffeineCacheManager缓存区别
java·spring·缓存
weixin_438335402 天前
Redis:分组与设备在 Redis 中缓存存储设计
redis·缓存·bootstrap
秋也凉2 天前
redis的命令集合
数据库·redis·缓存
R-sz2 天前
java内存缓存实现 与 redis缓存实现 (ConcurrentHashMap 应用)
java·redis·缓存