前端协商缓存和强缓存

在Web开发中,缓存是一种重要的性能优化技术,有两种主要的缓存策略:协商缓存和强缓存。

强缓存:

强缓存是指浏览器在请求资源时,先检查本地缓存,如果资源的缓存有效(未过期),浏览器直接从本地缓存中获取资源,而不会向服务器发送请求。这样可以有效减少网络传输,提高页面加载速度。

在强缓存中,常见的控制缓存的响应头字段有:

  • Cache-Control:通过指定max-age来设置资源的有效期(秒),如Cache-Control: max-age=3600表示该资源在缓存有效期为3600秒(1小时)。
  • Expires:指定资源的过期时间,是一个绝对时间,通常与Cache-Control一起使用,但优先级低于Cache-Control

协商缓存:

当资源的强缓存失效时,浏览器会发送请求到服务器,通过协商缓存来确定是否需要重新获取资源。服务器会比较客户端发送的请求中的缓存标识(例如If-Modified-SinceIf-None-Match)与服务器上资源的标识(例如Last-ModifiedETag),然后返回相应的状态码,通知客户端是否需要重新获取资源。

常见的协商缓存控制响应头字段有:

  • Last-Modified:指定资源的最后修改时间。
  • ETag:指定资源的唯一标识符(通常是资源内容的哈希值)。
  • If-Modified-Since:客户端发送的请求头字段,指定资源的最后修改时间,服务器通过比较此时间与资源的最后修改时间来判断是否需要返回新的资源。
  • If-None-Match:客户端发送的请求头字段,指定资源的唯一标识符,服务器通过比较此标识符与资源的当前标识符来判断是否需要返回新的资源。

如果资源未发生变化,则服务器可能返回304 Not Modified状态码,告知浏览器继续使用本地缓存。

综合使用强缓存和协商缓存可以有效地优化页面加载性能,减少不必要的网络传输。

总结:

1.强缓存涉及响应头字段:Cache-Control: max-age=3600 Expires

2.协商缓存

客户端涉及请求头字段:If-Modified-Since,If-None-Match

服务器资源标志:Last-Modified,ETag

相关推荐
珹洺2 小时前
MyBatis实战指南(七)MyBatis缓存机制
java·数据库·sql·安全·缓存·oracle·mybatis
奈斯ing14 小时前
【prometheus+Grafana篇】基于Prometheus+Grafana实现Redis数据库的监控与可视化
数据库·redis·缓存·grafana·prometheus
CHEN5_021 天前
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
数据库·redis·分布式·缓存
Villiam_AY1 天前
redis主从复制
数据库·redis·缓存
~Yogi1 天前
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
学习·spring·缓存
开航母的李大1 天前
【中间件】Web服务、消息队列、缓存与微服务治理:Nginx、Kafka、Redis、Nacos 详解
前端·redis·nginx·缓存·微服务·kafka
代码老y2 天前
Redis:现代应用开发的高效内存数据存储利器
数据库·redis·缓存
zz0723202 天前
第二十周:Redis(二)
数据库·redis·缓存
泽韦德2 天前
【Redis】笔记|第10节|京东HotKey实现多级缓存架构
redis·笔记·缓存
麓殇⊙2 天前
redis--黑马点评--Redisson快速入门
数据库·redis·缓存