浏览器缓存问题原理以及解决方案

浏览器缓存问题

简单来说,浏览器缓存就是把一个已经请求过的Web资源(如html页面,图片,js,数据等)拷贝一份副本储存在浏览器中。缓存会根据进来的请求保存输出内容的副本。当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求。比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。

为什么使用缓存

  1. 减少网络带宽消耗

  2. 降低服务器压力

  3. 减少网络延迟,加快页面打开速度

浏览器端的缓存规则

  新鲜度(过期机制):也就是缓存副本有效期。

  校验值(验证机制):资源的实体标签Etag(EntityTag)

解决方法

(1)使用HTMLMeta标签

Web开发者可以在HTML页面的节点中加入标签,代码如下

         <metahttp-equiv="Pragma"content="no-cache">

事实上这种禁用缓存的形式用处很有限:

a. 仅有IE才能识别这段meta标签含义,其它主流浏览器仅识别“Cache-Control:no-store”的meta标签。
b. 在IE中识别到该meta标签含义,并不一定会在请求字段加上Pragma,但的确会让当前页面每次都发新请求(仅限页面,页面上的资源则不受影响)。

(2)使用缓存有关的HTTP消息报头

在HTTP请求和响应的消息报头中,常见的与缓存有关的消息报头有:

posted @ 2018-05-13 11:09  阿明先森  阅读(118)  评论(0编辑  收藏  举报