设置浏览器缓存的几种方法:
  1. Last-Modified : 服务器上文件的最后修改时间
  2. Etag  : 文件标识
  3. Expiers : 本地缓存目录中文件过期的时间 ( 由服务器指定具体的时间 )
  4. Cache-control  缓存控制

浏览器端的缓存规则
  • 对于浏览器端的缓存规则是在HTTP协议头和 HTML 页面 Meat 标签中定义的。分别从 新鲜度 和 校验值两个维度来规定浏览器是否可以直接使用缓存中的副本,还是需要到原服务器获取更新的版本

    • 新鲜度 ( 过期机制 ) :也就是缓存副本有效期。
      1. 含有完整的过期时间控制头信息 ( HTTP协议报头),并仍在 有效期内
      2. 浏览器已经使用过这个缓存版本,并且在一个会话中已经检查过新鲜度
      3. 满足以上两个条件之一,则浏览器会直接从缓存中获取副本并渲染
    • 校验值 ( 验证机制 )  : 服务器返回资源的时候有时在控制头信息带上这个资源的实体标签 Etag ( Entity Tag) , 它可以用来作为浏览器再次请求过程的校验标识。如果发现校验标识不匹配,说明资源已经被修改或过期,浏览器需求重新获取资源内容。

注解:什么是Etag  
  • Etag 是 URL 的 Entity Tag , 用于标识 URL 对象是否改变,区分不同语言和Session等等。具体内部含义是服务器控制的,就像cookie那样。

    • 实例解析 : 当打开一个新的页面时 ,浏览器会向服务器发送一个http请求,服务器会生成一个 Etag 码 ( 标识当前被请求的文件) ,Etag 码放在 http 响应头 Response Headers中返回给浏览器

                  此时,服务器端返回的响应值为200,并发送了相应的网页内容,在http响应头中有 etag  消息头,值为ETag:   "87e2-524b6f1077980"  . 
                 然后刷新页面,浏览器再次向服务器发送http请求,此时请求头中包含 If-None-Match 消息头 ,它的值为If-None-Match :   "87e2-524b6f1077980"    . 该值的内容和先前第一次刷新返回的http响应中的 ETag 头完全一样。

                 此时,若 webserver 端的文件没有变化,这时  If-None-Match的值和 server 端的 etag 值相比完全相等,服务器认为客户端已经有最新的该文件的缓存了,服务器返回浏览器一个响应码为 "304"的http响应,它不包含任何响应的内容,只是提示客户端缓存的内容是最新的。
                若 webserver 端的文件发生变化,此时该文件对应的 etag 值就会发生变化,这时   If-None-Match的值和改变后的 etag 的值不相等,服务器就会发送一个新的文件内容给浏览器,同时返回改变后的 etag .
    • 注:etag码的生成和具体的服务器是有直接关联的,如果浏览器端前后两个http请求的接收端为不同的地址的服务器,此时返回的etag都是各自生成的不同的值,因此无法起到预期的缓存效果。

web浏览器下的缓存 - Etag的更多相关文章

  1. IE浏览器下ajax缓存导致数据不更新的解决方法

    摘自:http://www.iefans.net/ie-ajax-json-shuju-huancun/ 最近做设计的时候遇到一个小问题,当你用jquery的getjson函数从后台获取数据的时候,I ...

  2. get请求在ie浏览器下有缓存

    今天做项目的时候,数据库有新数据更新后,发现页面的行为却没有更新: 打断点调试的时候,发现程序也不进方法: 最终发现是因为请求数据的时候使用了get请求,而且在IE10下导致的: 注:IE浏览器中使用 ...

  3. IE浏览器下AJAX缓存问题导致数据不更新的解决办法

    一直知道使用ajax的时候,有的时候会出现数据缓存的问题,当时也没有深究,就是所有的简单粗暴的全部加上cache:false,或者使用在url处加上随机时间函数 今天无意间看见了为什么会出现缓存的原因 ...

  4. Web浏览器的缓存机制

    Web缓存的工作原理 所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改).这些规则有的在协议中有定义(如HTTP协议1.0 ...

  5. 006-优化web请求二-应用缓存、异步调用【Future、ListenableFuture、CompletableFuture】、ETag、WebSocket【SockJS、Stomp】

    四.应用缓存 使用spring应用缓存.使用方式:使用@EnableCache注解激活Spring的缓存功能,需要创建一个CacheManager来处理缓存.如使用一个内存缓存示例 package c ...

  6. 【Web缓存机制系列】2 – Web浏览器的缓存机制

    Web缓存的工作原理 所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改).这些规则有的在协议中有定义(如HTTP协议1.0 ...

  7. 【Web缓存机制系列】2 – Web浏览器的缓存机制-(新鲜度 校验值)

    Web缓存的工作原理 所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改).这些规则有的在协议中有定义(如HTTP协议1.0 ...

  8. IE浏览器下异步请求的缓存问题

    问题: 在做即时通讯时,需要提示用户有几条未读的提醒,这个是(如果有新的提示消息立马在浏览器无刷新提示)即时获取的.但我们的做法是,当用户点击未读信息进入到信息显示页面时重新获取下未读的提醒:但是在I ...

  9. ie浏览器下,get请求缓存问题

    1 使用get请求数据 1)Java代码 $.getJSON("sortShow!sortShow?time="+new Date().getTime(),function(){} ...

随机推荐

  1. VirtualBox命令更改虚拟硬盘空间

    主要是使用VBoxManage命令来操作 第一步:打开CMD,进入到virtualbox存放虚拟机的目录中(win7 系统可以直接在文件夹空白处按住shift键右键鼠标选择[在此处打开命令窗口]),输 ...

  2. day02 Java基础

    1.Java中的关键字都是小写的. 2.Java中的关键字 3.Java中的注释分为:单行注释.多行注释.文档注释 文档注释将被javadoc工具解析生成一个说明书. 4.Java中的常量分为字面值常 ...

  3. Computer Science Theory for the Information Age-3: 高维空间中的高斯分布和随机投影

    高维空间中的高斯分布和随机投影 (一)在高维球体表面产生均匀分布点的方法 我们来考虑一个采样问题,就是怎样在高维单位球体的表面上均匀的采样.首先,考虑二维的情况,就是在球形的周长上采样.我们考虑如下方 ...

  4. 内核工具 – Sparse 简介

    转载:http://www.cnblogs.com/wang_yb/p/3575039.html Sparse是内核代码静态分析工具, 能够帮助我们找出代码中的隐患. 主要内容: Sparse 介绍 ...

  5. JavaWeb中登陆功能

    首先我们要JavaWeb登陆的基本流程:JSP页面发送请求-->Servlet-->Servlet通过调用方法从数据库中得到数据并将结果返回页面 我们先建立三个jsp页面,包括login. ...

  6. cocos2d-x lua 调用onEnter和onExit

    cocos2d-x lua 调用onEnter和onExit version: cocos2d-x 3.6 onEnter和onExit在lua中不会因节点别add和remove而直接被调用,当子节点 ...

  7. jQuery中利用JSONP解决AJAX跨域问题

    写在前面 跨域的解决方案有多种,其中最常见的是使用同一服务器下的代理来获取远端数据,再通过ajax进行读取,而在这期间经过了两次请求过程,使得获取数据的效率大大降低,这篇文章蓝飞就为大家介绍一下解决跨 ...

  8. NODE编程(一)--Node功能的组织和重用

    Node开发面对的两个问题: 1.如何组织代码 2.如何进行异步编程. 一.Node功能的组织和重用 Node模块允许你从被引入文件中选择要暴露给程序的函数和变量.如果模块返回的函数或变量不止一个,那 ...

  9. linux上传下载

    linux传下载 1.可以通过xftp连接服务器直接 拖拽 2.yum install lrzsz   通过rz/sz命令上传下载

  10. [改善Java代码]不要让四舍五入亏了一方

    建议25: 不要让四舍五入亏了一方 本建议还是来重温一个小学数学问题:四舍五入.四舍五入是一种近似精确的计算方法,在Java 5之前,我们一般是通过使用Math.round来获得指定精度的整数或小数的 ...