dedecms做门户网站,中国十大电商排行榜,wordpress 修改注册地址,沈阳做微网站浏览器缓存问题#xff1a;
简单来说#xff0c;浏览器缓存就是把一个已经请求过的Web资源#xff08;如html页面#xff0c;图片#xff0c;js#xff0c;数据等#xff09;拷贝一份副本储存在浏览器中。缓存会根据进来的请求保存输出内容的副本。当下一个请求来到的时…浏览器缓存问题
简单来说浏览器缓存就是把一个已经请求过的Web资源如html页面图片js数据等拷贝一份副本储存在浏览器中。缓存会根据进来的请求保存输出内容的副本。当下一个请求来到的时候如果是相同的URL缓存会根据缓存机制决定是直接使用副本响应访问请求还是向源服务器再次发送请求。比较常见的就是浏览器会缓存访问过网站的网页当再次访问这个URL地址的时候如果网页没有更新就不会再次下载网页而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新浏览器才会再次下载网页。
为什么使用缓存
1减少网络带宽消耗
2降低服务器压力
3减少网络延迟加快页面打开速度
浏览器端的缓存规则
新鲜度过期机制也就是缓存副本有效期。
校验值验证机制资源的实体标签EtagEntityTag 举个栗子 解决方法
1使用HTMLMeta标签 Web开发者可以在HTML页面的head节点中加入meta标签代码如下 metahttp-equivPragmacontentno-cache 事实上这种禁用缓存的形式用处很有限 a.仅有IE才能识别这段meta标签含义其它主流浏览器仅识别“Cache-Control:no-store”的meta标签。 b.在IE中识别到该meta标签含义并不一定会在请求字段加上Pragma但的确会让当前页面每次都发新请求仅限页面页面上的资源则不受影响。
2使用缓存有关的HTTP消息报头 在HTTP请求和响应的消息报头中常见的与缓存有关的消息报头有 规则 消息包头 值/示例 类型 作用 新鲜度 Pragma no-cache 响应 告诉浏览器忽略资源的缓存副本每次访问都需要去服务器拉取【http1.0中存在的字段在http1.1已被抛弃使用Cache-Control替代但为了做http协议的向下兼容很多网站依旧会带上这个字段】 Expires Mon,15Aug201603:56:47GMT 响应 启用缓存和定义缓存时间。告诉浏览器资源缓存过期时间如果还没过该时间点则不发请求【http1.0中存在的字段该字段所定义的缓存时间是相对服务器上的时间而言的如果客户端上的时间跟服务器上的时间不一致特别是用户修改了自己电脑的系统时间那缓存时间可能就没啥意义了。在HTTP1.1版开始使用Cache-Control:max-age秒替代】 Cache-Control no-cache 响应 告诉浏览器忽略资源的缓存副本强制每次请求直接发送给服务器拉取资源但不是“不缓存” no-store 响应 强制缓存在任何情况下都不要保留任何副本 max-age[秒] 响应 指明缓存副本的有效时长从请求时间开始到过期时间之间的秒数 public 响应 任何路径的缓存者本地缓存、代理服务器可以无条件的缓存改资源 private 响应 只针对单个用户或者实体不同用户、窗口缓存资源 Last-Modified Mon,15Aug201603:56:47GMT 响应 告诉浏览器这个资源最后的修改时间。服务器将资源传递给客户端时会将资源最后更改的时间以“Last-Modified:GMT”的形式加在实体首部上一起返回给客户端【只能精确到秒级如果某些文件在1秒钟以内被修改多次的话它将不能准确标注文件的修改时间】 If-Modified-Since Mon,15Aug201603:56:47GMT 请求 其值为上次响应头的Last-Modified值再次向web服务器请求时带上头If-Modified-Since。web服务器收到请求后发现有头If-Modified-Since则与被请求资源的最后修改时间进行比对。若最后修改时间较新说明资源又被改动过则响应整片资源内容写在响应消息包体内包括更新Last-Modified的值HTTP200若最后修改时间较旧说明资源无新修改则响应HTTP304(无需包体节省浏览)告知浏览器继续使用所保存的cache 校验值 ETag fd56273325a2114818df4f29a628226d 响应 告诉浏览器当前资源在服务器的唯一标识符生成规则又服务器决定 If-None-Match fd56273325a2114818df4f29a628226d 请求 当资源过期时使用Cache-Control标识的max-age发现资源具有Etage声明则再次向web服务器请求时带上头If-None-MatchEtag的值。web服务器收到请求后发现有头If-None-Match则与被请求资源的相应校验串进行比对决定返回200或304 实际工作中我们完全可以时用上面这些参数的设置来组织/控制、更好的利用缓存来为我们服务。