开发者社区> ghost丶桃子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
firefox里面title乱码
原文:firefox里面title乱码 昨天 在notepad++里面写得文档里面title里面有中文,即使在文档里面写有charset=’UTF-8’, 但是保存后在firefox运行,浏览器标签标题里面就会出现乱码 , 造成这个错误的原因是:文档编码不是UTF-8,也就是与charset=’UTF-8’不一致,   解决办法: , 但是要注意一点是,在修改之前一定要先全选复制源码,然后在Notepad++的菜单“格式”里把格式编码改为 “以UTF-8无BOM格式编码”, 然后,全选,粘贴,保存即可。
712 0
坑爹的firefox
在公司,有同事向我反映,他用FF登录不了网站,我用FF看了一下,遇到这个诡异的问题:   错误信息:NS_ERROR_MALFORMED_URI: Component returned failure code: 0x804b000a (NS_ERROR_MALFORMED_URI) [nsIDOMLocation.
1052 0
怎么让CSS兼容IE和FireFox火狐的技巧大全
CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理 方法并整理了一下。对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加 DOCTYPE声明。
987 0
IE支持而Firefox不支持的CSS属性
今天,居然发现了一个IE支持,而Firefox确不支持的CSS属性。 .peopleBox a { text-indent:-999px; } 测试的时候,发现IE下表现良好,但是Firefox确无动于衷。
590 0
x3d
Firefox关于tab的一个bug
开始没意识到这是bug,后来发现不管是linux还是win下都碰到这个问题,才发现,我也找到bug了。 就是这样的:在打开第一个tab后,如果你打开一个新的空的tab,然后再打开一个新的tab后,这些tab就无法关闭了。
620 0
支持firefox的省略符
支持FF的省略符:下载 说到省略符,那非CSS莫属,有个老外用Java Script来实现,并且是批量处理的,重点是支持FF。
443 0
Firefox 对CSS 缩写的解析问题
CSS是支持缩写的,下面的代码有下划线的部分应该是设定padding-top为4px,padding-left为5px,padding-bottom为5px,padding-right为0px。这种写法在IE 6.0下解析正常的,但在Firefox下,padding-right不会是0px,而是有一个值。
596 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
WEB浏览器中即将发生的安全变化
立即下载
Flash Player最新安全特性分析 及绕过思路
立即下载
Flash Player最新安全特性分析及绕过思路
立即下载