浏览器缓存?优点?清除方法?

2018-11-04  本文已影响0人  浪漫天下

☆前端优化:浏览器缓存技术介绍 - 简书

浏览器缓存(适用于前端解决缓存问题) - 简书

js清除浏览器缓存问题的个人见解 - Jack_zengzhen的博客 - CSDN博客

1、什么是浏览器缓存?

    在Web性能优化上,我们总是追求网页能快速打开相应,这时就是浏览器缓存上场的时间了。

概念:当浏览器向服务器发起资源请求后,相应后会加载各种资源:HTML页面、图片、JS文件、CSS文件,对于一些不经常变的内容,浏览器会将它们缓存下来,等下次再访问的时候,就直接从客户端加载这些资源了。

    这些被浏览器保存下来的资源成为缓存。(注意:和cookie和localStorage是不同的概念)

2、浏览器缓存机制

a、浏览器是否缓存、缓存多久都是有服务器来决定的。

         准确的说,当浏览器发起资源请求后,在服务器返回的相应头中的某些字段就包含了有关缓存的信息。

              通用首部字段(就是请求报文和响应报文都能用上的字段)

               请求首部字段

               响应首部字段 

                实体首部字段 

    b、浏览器缓存的分类

        根据上面4个不同字段的信息,可以将浏览器缓存分为 “强缓存” 和 “协商缓存” 。

       强缓存:Expires&Cache-Control (有效期)

    命中强缓存,http状态码为200.

     强缓存就是判断缓存是否在有效期内,如果在,则直接从客户端获取资源,不会发送请求向服务端。即使请求的资源已经更新。

      Expires是HTTP 1.0提出的一个表示资源过期时间的header,它描述的是一个绝对时间,由服务器返回,用GMT格式的字符串表示,如:Expires:Thu, 31 Dec 2037 23:55:55 GMT,包含了Expires头标签的文件,就说明浏览器对于该文件缓存具有非常大的控制权。

      Expires是较老的强缓存管理header,由于它是服务器返回的一个绝对时间,在服务器时间与客户端时间相差较大时,缓存管理容易出现问题,比如:随意修改下客户端时间,就能影响缓存命中的结果。所以在HTTP 1.1的时候,提出了一个新的header,就是Cache-Control,这是一个相对时间,在配置缓存的时候,以秒为单位,用数值表示

     Cache-Control描述的是一个相对时间,在进行缓存命中的时候,都是利用客户端时间进行判断,所以相比较Expires,Cache-Control的缓存管理更有效,安全一些。

     这两个header可以只启用一个,也可以同时启用,当response header中,Expires和Cache-Control同时存在时,Cache-Control优先级高于Expires。

 Cache-Control 指定 public 或 private 标志。

 协商缓存:Last-Modified&Etag(是否更新)

         当浏览器对某个资源的请求没有命中强缓存,就会发一个请求到服务器,验证协商缓存是否命中,如果协商缓存命中,请求响应返回的http状态为304并且会显示一个Not Modified的字符串


3、浏览器缓存判断流程

4、浏览器缓存的优点

a、加快页面加载的速度,提升性能

b、缓解服务端的压力(减少请求次数)

c、减少带块消耗

5、浏览器缺点

有时候一些实时数据更新的页面是不能使用浏览器缓存的(如股票类网站实时更新数据),会出现一些错误的数据。

6、清除浏览器缓存方法

            a、<meta>方法

         b、清除form表单缓存

        c、Jquery - ajax清除缓存

     d、后端清理

上一篇下一篇

猜你喜欢

热点阅读