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

首页 > 网络编程 > PHP编程 > php技巧 更新日期: 2016-03-02
利用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">
还可以用程序控制
利用php实现禁用IE和火狐的缓存问题
 
然而,这个响应头却不能防止Firefox的缓存.这意味着,Firefox在正常访问的情况下,将一直使用缓存的页面,直到它发送GET请求重新检验.并且,如果是通过后退按钮访问页面,Firefox不会再次访问服务器,而是简单直接地从缓存加载.
那怎样才能关掉Firefox中的缓存呢? 答案很简单,关不了. 因为Firefox依靠缓存中的副本为"文件->另存为","查看源代码"这样的操作服务.但是,你可以控制页面缓存到哪里及那些缓存条目可以用于显示.
下面响应头在Firefox中可以防止持久化的缓存,强制页面被缓存到内存中:
Cache-Control:no-store
这个头也可以防止使用后退按钮时访问了缓存页面,它将触发一个HTTP GET请求.
这两个响应头的值组合使用可以在IE与Firefox得到期待的结果:
Cache-Control: no-cache, no-store
如下HttpWatch响应头标签所示:
利用php实现禁用IE和火狐的缓存问题
 
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天之后.下面的示例是一个没有Expires头页面的HttpWatch缓存标签:
pic3
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

> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!

相关文章
  • 禁用aspx页面的客户端缓存(防止页面被修改)
    默认情况下,IE打开一个网页,会在本地进行缓存,在某些时候也会带来了弊端,比如修改信息的页面等等因为URL并没有改变,所以IE会读取本地缓存,这种情况特别容易出现在弹出对话框或窗口进行修改的方式感兴趣的朋友可以了解下,或许对你有所帮助默认情况下,IE打开一个网页,会在本地进行缓存,这样是为了减少访问服务器的次数提高性能.但有时这也给我们带来了弊端,比如修改信 ...
  • Listview的异步加载性能优化
    Android中ListView是使用平率最高的控件之一GridView跟ListView是兄弟,都是继承AbsListView,ListView优化最有效的无非就是采用ViewHolder来减少频繁的对view查询和更新,缓存图片加快解码,减小图片尺寸 Android中ListView是使用平率最高的控件之一(GridView跟ListView是兄弟,都是 ...
  • MongoDB整库备份与还原以及单个collection备份、恢复方法
    mongodb数据库维护离不开必要的备份.恢复操作,而且一般不会出错,所以我们在使用的时候大部分时候使用备份和恢复操作就可以了mongodump.exe备份的原理是通过一次查询获取当前服务器快照,并将快照写入磁盘中,因此这种方式保存的也不是实时的,因为在获取快照后,服务器还会有数据写入,为了保证备份的安全,同样我们还是可以利用fsync锁使服务器数据暂时写入 ...
  • 利用JS重写Cognos右键菜单的实现代码
    利用JS重写Cognos右键菜单的实现代码
    我写了一个利用JS禁用Cognos右键菜单,下面的JS可以实现重写Cognos的右键菜单.只要将下面的代码拷到一个HTML项里即可. 代码如下: <!--菜单样式--> <STYLE type=text/css> .cMenu { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 ...
  • 禁用Tab键JS代码兼容Firefox和IE
    这篇文章主要介绍了禁用Tab键的JS代码兼容Firefox和IE,需要的朋友可以参考下 代码如下: <script type="text/javascript"> document.onkeydown=function(e){ var isie = (document.all) ? true:false; var key; v ...
猜你喜欢