源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-10-08 05:18 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:利用php实现禁用IE和火狐的缓存问题
在网速找了好多方法,最终还是解决了 其实最简单的方法是在头部加<meta>标签 <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache,no-store, must-revalidate"> <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="expires" CONTENT="0"> 还可以用程序控制
[url=http://files.jb51.net/file_images/article/201212/2012120311095515.png][img]http://files.jb51.net/file_images/article/201212/2012120311095515.png[/img] [/url]  然而,这个响应头却不能防止Firefox的缓存.这意味着,Firefox在正常访问的情况下,将一直使用缓存的页面,直到它发送GET请求重新检验.并且,如果是通过后退按钮访问页面,Firefox不会再次访问服务器,而是简单直接地从缓存加载. 那怎样才能关掉Firefox中的缓存呢? 答案很简单,关不了. 因为Firefox依靠缓存中的副本为"文件->另存为","查看源代码"这样的操作服务.但是,你可以控制页面缓存到哪里及那些缓存条目可以用于显示. 下面响应头在Firefox中可以防止持久化的缓存,强制页面被缓存到内存中: Cache-Control:no-store 这个头也可以防止使用后退按钮时访问了缓存页面,它将触发一个HTTP GET请求. 这两个响应头的值组合使用可以在IE与Firefox得到期待的结果: Cache-Control: no-cache, no-store 如下HttpWatch响应头标签所示: [url=http://files.jb51.net/file_images/article/201212/2012120311095516.png][img]http://files.jb51.net/file_images/article/201212/2012120311095516.png[/img] [/url]  [b]2[/b].如果没有设置过期时间Firefox会为你设置一个当IE遇到没有Expires头的http响应时,它就认为永远不能自动使用缓存条目,直到它重新从服务校验.由于IE的临时文件的一个设置项"检查所在网页的较新版本"默认为"自动",所以通常都是一个会话做一次. 这就为控制静态的html内容的缓存提供了一个合理的方式.用户新打开的IE会得到html的最新版本,而缓存的版本就在关闭IE前会一直被使用. Firefox处理缺失Expires头的方式不同.如果影响中有Last-Modified头它就会使用HTTP 1.1规范RFC2616中指定的一个尝试性的过期值: ([b]引用规范[/b]:) 并且,如果响应中有Last-Modified时间值,尝试性的过期值不能超过这个值到现在时间间隔的一个比率,一般设置这个比率为10%. 计算方式如下: 过期时间 = 现在时间 + 0.1 * (Last-Modified到现在的时间差) 例如,如果你的静态HTML文件上次修改时间是100天前,那过期时间就是10天之后.下面的示例是一个没有Expires头页面的HttpWatch缓存标签: pic3 Firefox自动设置了过期时间为8天后,因为这个页面大概80天没有被修改过了. 这意味着,为了保持控制好你的HTML页面,正如我们在 Two Simple Rules for HTTP Caching文章中讨论过的,你最好为你的静态资源如HTML,图片,CSS文件等,在你的WEB服务器设置一个合适的Expires值. [b]结论[/b] 为了确保IE与Firefox的缓存行为一致,你应该: 总是指定一个Expires头. 一般设置-1使用html页面能即时刷新或者对其它如图片,CSS,javascript脚本资源设置一个特定的过期时间 如果你要强制页面刷新,甚至是点击后台按钮的时候,那就设置 Cache-Control: no-cache, no-store
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部