IE和firefox缓存的两点不同【转】

当你建立好一个WEB服务后,通常有两个类型的缓存需要配置:

  设置网站有更新的时候html资源马上过期,以便正在浏览的用户可以很快地得到更新.

  设置所有其它资源(例如图片,CSS,javascript脚本)在一定时间后过期.

  这个缓存方案涵盖Two Simple Rules for HTTP Caching文章中提到关于如何处理更新的一些思想.

  现在HttpWatch 6.0支持Firefox了,我们想探讨一下Firefox在处理缓存上与IE有些什么不同.设置较长过期时间的使用方式(上面第二条)仍可以直接用于Firefox,但配置1在两者之间还是存在细微差别的.

  在之前的文章 中,我们把第一条划分为:

  某些时候动态HTML页面需要即时从服务器更新以备随时显示-甚至是使用后退按钮的时候.例如,显示银行帐号的状态或在线订单.

  静态HTML页面,比如联系,FAQs或者站点地图等页面,如果它们设置了Last-Modified响应头,允许浏览器在需要的时候重新校验,就可以利用到缓存.

  本文剩下部分探讨了Firefox中影响HTML页面缓存的两个重要不同点.

  1. 使用no-cache防止Firefox缓存无效

  你可以简单地设置如下的响应头预防IE缓存任何东西:

  Cache-Control: no-cache

  使用了这个响应头的页面不会保存在缓存里,IE总会重新从服务器加载;即使你使用后退按钮.下面这个例子使用HttpWatch监听一个网上商店,当我们在提交订单表单后点击后退按钮,然而,这个响应头却不能防止Firefox的缓存.这意味着,Firefox在正常访问的情况下,将一直使用缓存的页面,直到它发送GET请求重新检验.并且,如果是通过后退按钮访问页面,Firefox不会再次访问服务器,而是简单直接地从缓存加载.

  那怎样才能关掉Firefox中的缓存呢? 答案很简单,关不了. 因为Firefox依靠缓存中的副本为"文件->另存为","查看源代码"这样的操作服务.但是,你可以控制页面缓存到哪里及那些缓存条目可以用于显示.

  下面响应头在Firefox中可以防止持久化的缓存,强制页面被缓存到内存中:

  Cache-Control:no-store

  这个头也可以防止使用后退按钮时访问了缓存页面,它将触发一个HTTP GET请求.

  这两个响应头的值组合使用可以在IE与Firefox得到期待的结果:

  Cache-Control: no-cache, no-store 2. 如果没有设置过期时间Firefox会为你设置一个

  当IE遇到没有Expires头的http响应时,它就认为永远不能自动使用缓存条目,直到它重新从服务校验.由于IE的临时文件的一个设置项"检查所在网页的较新版本"默认为"自动",所以通常都是一个会话做一次.

  这就为控制静态的html内容的缓存提供了一个合理的方式.用户新打开的IE会得到html的最新版本,而缓存的版本就在关闭IE前会一直被使用.

  Firefox处理缺失Expires头的方式不同.如果影响中有Last-Modified头它就会使用HTTP 1.1规范RFC2616中指定的一个尝试性的过期值:

  (引用规范:)

  并且,如果响应中有Last-Modified时间值,尝试性的过期值不能超过这个值到现在时间间隔的一个比率,一般设置这个比率为10%.

  计算方式如下:

  过期时间 = 现在时间 + 0.1 * (Last-Modified到现在的时间差)

  例如,如果你的静态HTML文件上次修改时间是100天前,那过期时间就是10天之后.Firefox自动设置了过期时间为8天后,因为这个页面大概80天没有被修改过了.

  这意味着,为了保持控制好你的HTML页面,正如我们在 Two Simple Rules for HTTP Caching 文章中讨论过的,你最好为你的静态资源如HTML,图片,CSS文件等,在你的WEB服务器设置一个合适的Expires值.

  结论

  为了确保IE与Firefox的缓存行为一致,你应该:

  总是指定一个Expires头. 一般设置-1使用html页面能即时刷新或者对其它如图片,CSS,javascript脚本资源设置一个特定的过期时间

  如果你要强制页面刷新,甚至是点击后台按钮的时候,那就设置 Cache-Control: no-cache, no-store

 

from:http://net.zdnet.com.cn/network_security_zone/2008/1106/1219561.shtml

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/archive/2010/01/13/1646247.html

时间: 2024-09-14 01:06:05

IE和firefox缓存的两点不同【转】的相关文章

利用php实现禁用IE和火狐的缓存问题_php技巧

在网速找了好多方法,最终还是解决了 其实最简单的方法是在头部加<meta>标签 <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache,no-store, must-revalidate"> <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="expire

Linux系统中firefox浏览器如何下载在线视频?

最简单方法firefox下载http://www.aliyun.com/zixun/aggregation/11158.html">在线视频如下: 1.downloadhelper插件,通吃,貌似还支持格式转换,非常不错 2.cacheviewer插件(用来浏览firefox缓存,可以根据文件属性排序) 3./tmp 之所以把/tmp单独列出来,是因为有些时候,downloadhelper没有抓到视频链接,而cacheviewer浏览缓存时候,却发现缓存仅仅十几k,根本没有视频文件那个庞然

使用 CSS sprite 的好处和坏处

原文:CSS Sprites: Useful Technique, or Potential Nuisance? 译文:CSS Sprites:鱼翅还是三鹿? 无处不在的 CSS sptites - 为数不多的几个可以直接跳过"流行"这个过程,而可以马上并且牢牢地跻身于最佳 CSS 实践之中的几个技术之一.虽然它真正流行是在 A List Apart 解释并认可这个技术之后,但是早在 2003 年 7 月份,Peter Stanicek 就已经开始谈论它了. 目前大多数的开发人员对这个

优化apache/tomcat配置

apache|优化 近日不得不越那个代疱地钻研发布和发布系统管理和测试的相关问题.有充分证据表明现得绝大多数的apache/tomcat配置中,apache根本就是摆设,所有的响应负担,包括静态多媒体文件实际上是由tomcat完成,而tomcat实际上是效率相当低的,大约是apache的十分之一.因此,没有达到集成两者的目的:但在优化配置本地基本成功,打算在网上测试服务器实际试行时,却碰到了"martix现象":无可解释的不可重复的异常表现.看来,在tomcat/apache的配合上要

给你的站点全面提速——来自Yahoo UI的各种Bset Practices

最少化Http请求 终端用户80%的响应时间都花在前端(而非服务端处理).而这其中绝大部分的时间又都花在下载所有的页面"组件":图片.样式表文件.脚本文件.Flash等.而按需加载,减少http的请求数来呈现页面,是加快页面呈现的关键. 而减少页面组件的其中一种方式就是简化页面设计.但有一种既呈现富客户端组件,同时又使页面的响应时间得以加快吗?这里有几种技术能够有效减少http的请求数,并且又能够支持富客户端页面的设计. 合并文件:你可以合并多个文件来减少http请求,比如合并脚本文件

Spring MVC 详解

第一章 Web MVC简介Web MVC简介 1.1.Web开发中的请求-响应模型:   在Web世界里,具体步骤如下: 1.  Web浏览器(如IE)发起请求,如访问http://sishuok.com 2.  Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为html). 3.web服务器处理完成后,返回内容给web客户端(一般就是我们的浏览器),客户端对接收的内容进行处理(如web浏览器将会对接收到的html内容进行渲染以展示给客户)

LinkedHashMap相关信息介绍(转)

 Java中的LinkedHashMap此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表.此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序). LinkedHashMap和TreeMap的区别 首先2个都是map,所以用key取值肯定是没区别的,区别在于用Iterator遍历的时候 LinkedHashMap保存了记录的插入顺序,先插入的先遍历到 TreeMap默认是按升序排,也可以指定排序的比较器.遍历的时候按升序遍历. http

Firefox和IE浏览器清除缓存方法

  IE浏览器清除缓存的方法 工具 =>Internet选项 =>浏览历史记录 =>删除 =>选中Internet临时文件夹 =>确定 请仔细对照上图,删除缓存避免调试程序时不刷新问题. Firefox清除缓存方法 工具 =>选项 =>高级 =>网络 =>脱机缓存 点击 立即清除 请仔细对照上图的位置.清除Firefox的缓存,让完全页面重新加载. 其他浏览器清除缓存的方法就期待你的补全了,Firefox和IE浏览器用的最广泛,网站开发时常用到的清除缓

Firefox 32 Beta 版将带来更快的 HTTP 缓存后端

Mozilla已经推出了 Firefox 32.0 Beta 1 版本和 Firefox Aurora 33.0a2 浏览器.虽然没有令人瞠目结舌的新功能,但是均包含了一些有用的改进,帮助Firefox继续跟上浏览器竞争步伐. Firefox 32带有一个新的HTTP缓存后端,其他改进包括请求排序的优化,以提供更快的加载时间以及对崩溃和挂起应变能力提升. 新版本还改进了密码管理器.加载项管理器.用户还可以连接到通过HTTPS连接HTTP代理,另外集成了垃圾网页回收功能.Firefox 32.0