浏览器缓存问题原理以及解决方案
浏览器缓存问题
简单来说,浏览器缓存就是把一个已经请求过的Web资源(如html页面,图片,js,数据等)拷贝一份副本储存在浏览器中。缓存会根据进来的请求保存输出内容的副本。当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求。比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。
为什么使用缓存
减少网络带宽消耗
降低服务器压力
减少网络延迟,加快页面打开速度
浏览器端的缓存规则
新鲜度(过期机制):也就是缓存副本有效期。
校验值(验证机制):资源的实体标签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请求和响应的消息报头中,常见的与缓存有关的消息报头有:
四体不勤 五谷不分 文不能测字 武不能防身