浏览器缓存机制

简介: 浏览器缓存机制

概念

浏览器会将请求后的资源进行存贮为离线资源,当下次需要该资源时,浏览器会根据缓存机制决定直接使用缓存资源还是再次向服务器发送请求


作用

  • 减少了不必要数据的传输、降低服务器的压力
  • 加快了客户端访问速度
  • 增强用户体验


强缓存

不向服务端发送请求,强制使用缓存数据


实现方式

后端在响应头中返回 Expires 和 Cache-Control


Expires :

http 协议 1.0 的字端

缓存过期时间,用来指定资源到期的时间,是服务器端的具体的时间点

浏览器:使用 expires 到期时间和本地时间进行对比,如果本地时间被修改或者和服务器时间差距较大,造成不准确的问题

16b8103f14224a6bbb70b6888359ac38.png


Cache-Control

Cache-Control 是 HTTP 1.1 的字段

约定过期时间的相对时间

4d95ab5697f24acaaa0424e51fe08696.png

当 cache-control 和 expires 同时存在 cache-control 的优先级会比 expires 高


协商缓存

当强缓存失效后,会使用协商缓存

协商缓存由服务器决定是否使用缓存


  1. 向服务器发送请求资源并携带标识
    Etag 字段:表示请求资源在服务器的唯一标识,浏览器可以根据 ETag 值缓存数据,下次请求的时候以 If-None-Match 字段请求
    Last-Modified 字段:用于标记请求资源的最后一次修改时间
  2. 服务器会进行判断浏览器缓存的资源是否真的失效是否更新
    真的失效,服务端已经更新,返回 200,重新返回最新资源和缓存标识
    浏览器再次存入缓存
    后续再次从强缓存开始
  3. 缓存时间到了,但是资源没更新,就还使用本地的
    直接返回 304


总结

后续再次从强缓存开始

  1. 缓存时间到了,但是资源没更新,就还使用本地的
    直接返回 304


总结

17da8f7c3f9b4a65a70ccb63bc46e093.png






目录
相关文章
|
3月前
|
存储 缓存 前端开发
HTTP的缓存机制是什么?
HTTP的缓存机制是什么?
28 1
|
6月前
|
SQL 缓存 Java
Mybatis-plus缓存机制
MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,提供了更便捷的CRUD操作和其他功能。与MyBatis相比,MyBatis-Plus并没有引入自己的缓存机制,而是直接使用了MyBatis的缓存机制。 在MyBatis中,缓存分为一级缓存和二级缓存。 1. 一级缓存:一级缓存是SqlSession级别的缓存,它默认是开启的。当查询操作执行时,查询的结果会被缓存在SqlSession的内部数据结构中。如果后续再次执行相同的查询,MyBatis会先检查一级缓存中是否存在结果,如果存在则直接返回缓存的结果,而不会再次执行SQL语句。一级缓存的生命周期与SqlSession相同,
234 0
|
7月前
|
缓存 Java 数据库连接
深入浅出 MyBatis 的一级、二级缓存机制
深入浅出 MyBatis 的一级、二级缓存机制
141 0
|
6月前
|
存储 缓存 Java
【面试题精讲】Java包装类缓存机制
【面试题精讲】Java包装类缓存机制
|
7月前
|
存储 缓存 BI
06-OC方法缓存机制cache_t
06-OC方法缓存机制cache_t
65 0
|
3月前
|
存储 消息中间件 缓存
redis的缓存机制
redis的缓存机制
92 0
|
3天前
|
缓存 Linux
linux系统缓存机制
linux系统缓存机制
|
14天前
|
XML 缓存 Java
MyBatis二级缓存解密:深入探究缓存机制与应用场景
MyBatis二级缓存解密:深入探究缓存机制与应用场景
49 2
MyBatis二级缓存解密:深入探究缓存机制与应用场景
|
1月前
|
存储 缓存 算法
深入探究LRU缓存机制:优化内存利用与提升性能
深入探究LRU缓存机制:优化内存利用与提升性能
145 1
|
1月前
|
存储 缓存 Java
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制

热门文章

最新文章