首页 > 其他分享 >浏览器缓存

浏览器缓存

时间:2022-10-09 20:44:45浏览次数:58  
标签:文件 缓存 HTTP 1.1 cache 设置 浏览器

1. 由后端通过 response 响应头设置的缓存

1.1 强缓存

1.1.1 什么是强缓存

所谓的强缓存是指将由后台返回过来的文件存储到本地, 当再次请求相同文件时, 不用再去向服务器去发送请求, 而是先查看缓存中的相应文件, 只要文件不过期, 则会用缓存中的文件来回应请求; 而若是过期了, 就仍需要再次请求服务器

1.1.2 如何设置强缓存

有两种设置强缓存的方法, 分别是基于 HTTP/1.0HTTP/1.1 两种协议

  • expires(HTTP/1.0):
    • 通过设置 HTTP响应头中的 expires 属性可以为相应的文件设置强缓存.
    • 其格式一般是 expires: Wed, 05 Oct 2022 18:53:11 GMT
      • 右边的值即为该文件的到期时间(格林时间)
      • 只要将格林时间设置为比当前时间更早就表示不设置强缓存
  • cache-control(HTTP/1.1):
    • 通过设置 HTTP响应头中的 cache-control 属性可以为相应的文件设置强缓存.
    • 其格式一般是 cache-control: max-age=600
      • 这里的 max-age 对应的是在缓存中保留的时间, 600 表示保留 600s
      • 若是 cache-control 所对应的值为 no-cache 则表示不设置强缓存

如果 expirescache-control 都设置了, 则以 cache-control 为准

1.1.3 文件的请求流程

1.2 协商缓存

1.2.1 什么是协商缓存

若一个文件被协商缓存在本地, 则当浏览器需要请求该文件时, 其会将缓存中文件的过期时间/标识发送给服务器, 若服务器确认文件没有失效, 返回 304 时, 浏览器会从本地缓存中取出该文件来响应请求

1.2.2 如何设置协商缓存

有两种方法设置协商缓存, 分别基于 HTTP/1.0HTTP/1.1

  • last-modified(HTTP/1.0):
    • 通过设置响应头的 last-modified 属性, 可以为相应的文件设置协商缓存
    • 其格式一般是 last-modified: Tue, 27 Sep 2022 05:31:33 GMT
      • 右边的值是该文件的过期时间(格林时间)
      • 只要将格林时间设置为比当前时间更早就表示不设置协商缓存
  • etag(HTTP/1.1):
    • 通过设置响应头的 etag 属性, 可以为相应的文件设置协商缓存
    • 其格式一般是 etag: 9de6JuprLuBFrz3sp6HXvQ==
      • 右边的值是后台为该文件生成的唯一标识符

2. 可以由前端开发者设置的缓存

2.1 localStorage

2.2 sessionStorage

标签:文件,缓存,HTTP,1.1,cache,设置,浏览器
From: https://www.cnblogs.com/suzukaze/p/browser-cache.html

相关文章

  • 如何使用KrpanoToolJS在浏览器切图
    如何使用KrpanoToolJS在浏览器切图框架DEMO框架源码地址【独辟蹊径】逆推Krpano切图算法,实现在浏览器切多层级瓦片图一、功能介绍在浏览器中将全景图转为立方体图、......
  • 【SpringBoot】解决redis 查找/删除缓存失败问题
     使用StringRedisTemplate.delete(key) 删除缓存数据失败,原因是序列化问题导致。 需要把key和hash都使用String的序列化方式 解决方法:创建一个新的配置类:@Con......
  • 一个浏览器上面呈现的内容 是怎么生成的呢?
     浏览器的渲染过程:浏览器从服务器下载完文件后,就要对其进行解析和渲染.HTMLParser将HTML解析转换成DOM树.CSSParser将样式表解析转换成CSS规则树.转换完成后的DOM树......
  • 浏览器
    历史记录chormefirefoxieiehttps://www.xiazaiba.com/hotsoft/ie/https://baike.baidu.com/item/MicrosoftEdge/17511966?fr=aladdinIE浏览器20年1995年:微软Inter......
  • 浏览器中javascript简易实现json数据保存到客户端
    思路很简单,就是利用Blob、URL.createObjectURL()方法和<a>便签的HTML5新属性download来模拟远端文件下载保存。下面直接上代码savePath:function(){varme......
  • Springboot整合缓存
    一、缓存的引入一个应用主要瓶颈在于数据库的IO,大家都知道内存的速度是远远快于硬盘的速度(即使固态硬盘与内容也无法比拟)。应用之中经常会遇到返回相同的数据(数据字典,行政......
  • Mac的chrome浏览器右键翻译失败解决方案
    右键翻译失败解决办法我们打开chrome浏览器右键翻译老是失败或者重试mac用户打开终端输入nslookupgoogle.cn得到的Adress220.181.174.162保存起来用终端以管理员权......
  • 远程浏览器隔离技术
    1、什么是浏览器隔离?浏览器隔离是一项技术,它通过将加载网页的过程与显示网页的用户设备分开以此来保持浏览活动的安全。这样,潜在的恶意网页代码就不会在用户的设备上运行,......
  • proxy_cfw全局代理_浏览器代理配置(chromium based(edge)/firefox/IDM)
    文章目录​​无须sstap等软件实现虚拟网卡代理​​​​reference​​​​配置步骤​​​​serviceMode​​​​tunMode​​​​检查启用情况​​​​edge浏览器内部代理......
  • 巧用缓存加速Loki查询
    正文共:1053字预计阅读时间:3分钟缓存在当下已被广泛的应用到大型业务系统当中合理的使用缓存可有效加快应用速度、提升应用的可扩展性和降低对后端数据的性能依赖。那么对于......