`
andy136566
  • 浏览: 285845 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

浏览器的“刷新”&“缓存机制”

阅读更多

http://blog.sina.com.cn/s/blog_6868b78d0100kgwp.html

 

1)
Last-Modified

  在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:
  Last-Modified: Fri, 12 May 2006 18:53:33 GMT
  客户端第二次请求此URL时,会在头部加入一个属性,询问该时间之后文件是否有被修改过:
  If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT
  如果服务器端的文件没有被修改过,则返回状态是304,内容为空,这样就节省了传输数据量。如果服务器端的文件被修改过,则返回和第一次请求时类似。
  ETag
  和Last-Modified类似,由于RFC2616(也就是HTTP/1.1)中没有说明ETag该是什么格式的,只要确保用双引号括起来就行了,所以你可以用文件的hash,甚至是直接用Last-Modified,以下是服务器端返回的格式:
  ETag: "50b1c1d4f775c61:df3"
  客户端的查询更新格式是这样的:
  If-None-Match: W/"50b1c1d4f775c61:df3"
  如果ETag没改变,则返回状态304然后不返回,这也和Last-Modified一样。
  Expires
  这个属性就如我们在ASP中使用HttpResponse.ExpiresAbsolute一样直接,声明某某时刻过期之后浏览器就应该重新请求该URL,使用格式为:
  Expires: Sun, 10 Feb 2002 16:00:00 GMT
  注意HttpResponse.ExpiresAbsolute在ASP.NET中是不建议使用的,现在我们应该使用的是HttpResponse.Cache.SetExpires。
  Pragma
  通常我们用到的值就是no-cache,这和在Cache-Control中使用no-cache值是一样的,Cache-Control在下面讲。Pragma的使用格式如下:
  Pragma: no-cache
  Cache-Control
  这是一个集合型属性,它里面能够包含很多子属性,并且允许用户扩展新的子属性。常见的子属性包括:
  max-age - 以秒为单位的超时,覆盖Expires属性。
  public - 允许保存在共享缓存中。
  private - 只允许保存在私有缓存中。
  no-cache - 不允许缓存。
  no-store - 不允许缓存在持久介质中。
  no-transform - 不允许转换存储系统。


2)

众所周知浏览器是通过Last-Modified和Expires来处理缓存的,而在具体调试中发现并不按我们想象的方式进行,其原因很有可能是在刷新浏览器的时候采用不恰当的方式导致。对于大多数浏览器而言,都包含有三种刷新方式,以下我们以IE浏览器为例:

F5 刷新
Ctrl+F5 刷新
“转至”或地址栏里回车 刷新

这些快捷键的功能,主流浏览器都是相同的。
而这三种刷新方式会导致浏览器采取不同的缓存机制:

F5:不允许浏览器直接使用本地缓存,因此Last-Modified能起作用,但Expires无效
Ctrl+F5:是强制刷新,因此缓存机制失效
“转至”或地址栏里回车:正常的访问,Last-Modified和Expires都有效

分享到:
评论

相关推荐

    解析浏览器端的AJAX缓存机制

    里我们来解析浏览器端的AJAX缓存机制,来共同看一下AJAX缓存与HTTP缓存的关系以及AJAX缓存的刷新时间问题

    浅谈Ajax的缓存机制

    Ajax的缓存机制和浏览器处理资源时的缓存机制是一样的。 三条简单规则: 只要是URL相同的GET请求,浏览器会使用缓存(当然还要看服务器的Cache-Control/Expires/Last-Modified/ETag头的设置)。 只要是POST请求,...

    js刷新当前页面的几种方法(相当牛X)

    1,reload 方法,该方法强迫浏览器刷新当前页面。 语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页。true, 则以 GET 方式,从服务端取最新的页面, 相当于...

    浅析IE浏览器关于ajax的缓存机制

    大多数情况下,我们使用ajax是希望实现局部刷新的,所以这就牵扯到一个改进的问题。  如果想每次都获取到最新数据,我们只需保证每次传入的URL不一样。最简单的方法就是通过给url拼接参数。利用math函数的random...

    HTML5 manifest离线缓存的示例代码

    虽然所有浏览器都有缓存机制,但它们并不可靠,也不一定总能起到预期的作用。HTML5 使用 ApplicationCache 接口解决了由离线带来的部分难题。 使用缓存接口可为您的应用带来以下三个优势: 离线浏览 – 用户可在...

    HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题

    虽然所有浏览器都有缓存机制,但它们并不可靠,也不一定总能起到预期的作用。HTML5 使用 ApplicationCache 接口解决了由离线带来的部分难题。 使用缓存接口可为您的应用带来以下三个优势: 离线浏览 – 用户可在离线...

    Jquery $.getJSON 在IE下的缓存问题解决方法

    Jquery 的 $.getJSON请求有一个缓存机制 就是在请求相同URL访问后台时候 他会直接从页面缓存的数据中取出来数据 而不是请求后台 所以我们要改变一个URL 这是我们的URL var url =“XXXX/XXX” 下面来一个 生成随机数...

    ASP.NET 清除模式窗口数据缓存的操作方式

    这涉及到ShowModalDialog缓存机制的问题,需要我们手动添加一些代码来清除缓存。 操作方式如下: 首先在前台界面(即aspx的界面)代码中,添加:<meta http-equiv=”expires” content=”0″ /><%–...

    .net源码 大学网站模板

    7.多重缓存机制,让网民超快地打开您的网站,让人觉得打开您的网站很“爽!”。 8.不会像生成静态网页那样产生大量垃圾文件占用空间。 9.采用防止外部提交和防刷新机制,有效防止各种攻击行为。 10.在线制作略图功能...

    漂亮的.net大学网站模板

    7.多重缓存机制,让网民超快地打开您的网站,让人觉得打开您的网站很“爽!”。 8.不会像生成静态网页那样产生大量垃圾文件占用空间。 9.采用防止外部提交和防刷新机制,有效防止各种攻击行为。 10.在线制作略图功能...

    店盟淘宝客程序V12.1.rar

    2.修改缓存机制,缓存多加一层目录分布,确保每个目录文件数量不会过多,目前应该每个目录缓存文件可以控制在一百以内。这样可以增加读取效率,减少CPU消耗。 3.修正搜索结果为一个商品时显示未找到商品的BUG。 4....

    漂亮清新的绿色企业网站源码

    7.多重缓存机制,让网民超快地打开您的网站,让人觉得打开您的网站很“爽!”。 8.不会像生成静态网页那样产生大量垃圾文件占用空间。 9.采用防止外部提交和防刷新机制,有效防止各种攻击行为。 10.在线制作略图功能...

    .net旅游网站模板

    7.多重缓存机制,让网民超快地打开您的网站,让人觉得打开您的网站很“爽!”。 8.不会像生成静态网页那样产生大量垃圾文件占用空间。 9.采用防止外部提交和防刷新机制,有效防止各种攻击行为。 10.在线制作略图功能...

    wap测试的几个注意点

    缓存,程序中如果有使用到缓存的内容,需要考虑到缓存的机制以及失效的情况。 3.刷新,一般手机上刷新就是重新提交一次请求,这是不同于web测试,也是wap测试人员容易疏忽的一点。需要明确程序中对重新提交请求的...

    Colorful 明月浩空 V2.7

    5、Pjax局部加载,Ajax评论无刷新多次提交,Ajax全文即时搜索,G头像缓存,动态Title标题 6、全站自响应图片预览,导航悬浮,滚动微语,访客/博主评论样式区别,访客操作系统、浏览器、IP地址记录… 功能详解...

    Wedonet中文建站系统

    防刷新机制,防止客户无限刷新网页. c. 防止客户暴力破解,现在有很多这种工具,可以不停的测试网站密码,本站采用了限制刷新时间,认证码,防止异地提交等多种方式,防止暴力破解. d. 隐藏管理入口.普通客户不会发现从...

    mypic图片管理程序 v1.31

    ·采用项目缓存机制,单入口模式,简洁,小巧,高效 ·框架式结构,详尽注释,方便二次开发和扩展 ·支持动态,伪静态,生成HTML浏览模式 ·支持批量上传,抓取远程图片,普通上传模式 ·自由分类,首页自动生成导航和内容调用 ...

    stations-monitor:充电站监控原型应用

    最好实现某种缓存管理机制,以便在从API加载新数据时返回数据的缓存版本(如果存在)。 在本地运行和测试 在项目目录中,可以运行: yarn start 在开发模式下运行应用程序。 打开在浏览器中查看它。

    YIXUNCMS(易迅企业网站建设系统) v2.0.3 简约版.zip

    10、YIXUNCMS2.0简约版新增了WAP(移动端)应用,并使用浏览器自动识别机制,使网站能适应用于不周的设备及浏览器; 易迅BS软件工作室承诺:系统功能完全由易迅BS工作室亲自编写、绝非二次开发、绝无一行废代码。 ...

    LeadWit CMS 4.0 RC3

    <br>AJAX异步静态生成,不会因为生成页面被无意刷新或浏览器关闭而停止生成,生成过程中,还可以进行其他操作; <br>伪静态服务器需要安装IISURLReWrite.dll组件 <br>4、新增网站地图、TAG大全、RSS订阅...

Global site tag (gtag.js) - Google Analytics