美文网首页
深入之浏览器缓存

深入之浏览器缓存

作者: lmmy123 | 来源:发表于2019-06-29 13:42 被阅读0次

    浏览器的缓存

    强缓存

    经过一次请求后,将文件放在内存或磁盘中,下次不需要发送请求,直接从本地拿

    • 缓存到内存

      当进程(浏览器页面)结束后,内存中缓存会被释放掉

    • 缓存到磁盘

      会一直存在

      Pragma和Expires和Cache-Control

      • Expires Http1.0

        过期时间,对比浏览器时间,没有过期则使用缓存数据

        缺点:由于系统时间可以修改,不准确

      • Cache-Control Http 1.1 通用的消息头字段,响应头和请求头都可以带上

        no-cache 不缓存 响应头设置代表跳过强缓存,请求头中设置代表跳过缓存策略

        no-store 不缓存响应数据 代表禁用一切缓存

        max-age 失效时间,以秒为单位 max-age = 0 代表跳过强缓存

        public 缓存可以共享

        private 个人的,缓存不可以共享

    协商缓存 (对比缓存)

    发送请求,服务器先检查头部是否有缓存标识,有则命中协商缓存,返回304

    • If-Modified-Since / Last-Modified

      响应头返回Last-Modified,

      请求头带上 if-Modified-sSnce : 值是响应头的Last-Modified

    • If-None-Matched / Etag

      Etag 服务器资源唯一的标志 http1.1

      响应头返回Etag,

      请求头带上 If-None-Matched : 值是响应头的Etag

      有了Last-Modified为什么还要Etag?

      • Etag精准度到秒,如果短时间内频繁改动资源,操作会失效

      • 有的文件会定时生成,内容一样,但是Last-Modified不一样

    浏览器的刷新

    • 正常的链接进入

      先匹配强缓存,再匹配协商缓存

    • 页面刷新或拿地址重新打开页面

      跳过强缓存,发请求,匹配协商缓存

    • 强制刷新

      跳过缓存策略

    • 勾选disable cache

      请求头中设置 cache-control: no-cache 跳过缓存策略

    相关文章

      网友评论

          本文标题:深入之浏览器缓存

          本文链接:https://www.haomeiwen.com/subject/lthpcctx.html