`
fire314159
  • 浏览: 30605 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

IE cache缓存 所带来的问题

阅读更多

一个问题曾经困扰了很久,最近才找到自己觉得合理的解释。

曾经用struts的多语言功能写了一些东西,用的是locale这个对象(怎么做的就不讲了,这里不是想讲struts)。

在本地测试没有问题,中文英文切换都OK。放到远程服务器上自己试了也觉得ok。但之后不断有人反映,有时候会很怪异的在英文的页面环境下点击链接后,居然又回到了中文的页面环境!我第一个反应肯定觉得是cache的问题。然后仔细检查了一次所有jsp页面的html <meta> tag,确保了所有的no cache和expire属性都设好了。然后要求大家都把IE的检查属性设置到“每次检查”。在自己机子上点击了无数遍,中文英文反复切换,似乎没有问题了。但没多久又有人投诉问题又出现了。

这里要介绍一个工具叫做httpwatch,是一个IE嵌入式的工具,用来检测IE的所有HTTP通讯的。没有了这个工具,我很难找到问题所在(当然可能有大牛一早知道,但谁都要经历不知道到知道的过程)。

jsp页面是通过例如以下的link来调用struts action切换语言环境的,http://localhost/xxx/langAction.do?lang='zh'。但发现这条link被IE缓存了,也就是说很多时候服务器根本就没有收到这个request。解决的办法可以是在link后面加上一个random number或者timestamp,问题是很多这样的link是hardcode到了flash里面(修改flash的代码? ),所以这种办法行不通。有趣的是,如果这个action仅仅是修改了session里面的locale属性,而不通知front controller 去返回结果页面给用户的话(也就是 return null),这个是肯定会cache的。然而如果要返回一个页面给用户,这个cache的频度会小很多。

最后推断,问题出在了两处地方。

1. IE的cache 也许是用url link + page result 来存储和判断是否应该使用cache,而不是真正发出request。在return null的那种情况,判断的依据是url link + null。

2。在jsp页面中,光是使用html的<meta> tag是无法禁止缓存的。一定要加上

response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

有人肯定会说,这个跟html的tag设置没有不同啊。的确,我也觉得,但实践证明,没有这几句,光靠html tag不行。

所以当action会返回页面时,有以下这两种情况:

a,返回的页面没有写上上面的禁止cache的语句(或者只写了html tag)。IE存储的是URL link + page result(cache eabled)。这也就是导致了之前为什么还会有cache的原因

b,返回的页面写上了禁止cache语句 。IE存储的是URL link + page result(cache disabled)。这样才能够实现到我们想要的目的。每次都会真正的发出request。

PS:IE的检查设置一点都信不过,尽管调到最高级别,如果没有上述措施,一样会cache。而且,你总不能告诉全世界的用户为了看你的网站去修改一下IE吧。(其他浏览器没有试验过)

分享到:
评论

相关推荐

    IE cache缓存 所带来的问题收藏

    ### IE Cache缓存所带来问题的深入探讨 #### 背景与问题描述 在Web开发过程中,浏览器缓存管理一直是开发者关注的重点之一。本文主要针对Internet Explorer (IE) 浏览器中的缓存机制进行分析,并探讨由其引发的一个...

    IECACHE0621final IE缓存提取工具

    **IECACHE0621final IE缓存提取工具详解** IECACHE0621final是一款专为Microsoft Internet Explorer(简称IE)设计的缓存提取工具,它能够帮助用户方便地从浏览器的临时文件夹中检索并导出视频、音频、图片等多媒体...

    IE_Cache_Recovery.rar_IE Cache Recove_IE Cache Recovery_IE cache

    综上所述,"IE_Cache_Recovery"是一款强大的工具,它能够帮助用户深入挖掘和恢复IE浏览器的缓存信息,从而揭示隐藏在网络浏览历史中的宝贵数据。在使用时,用户应确保遵循合法合规的原则,尊重和保护个人隐私。

    IE缓存读取

    在IT领域,IE缓存(Internet Explorer Cache)是微软浏览器保存网页内容的一种机制,用于提高网页加载速度。当用户访问过一个网站后,浏览器会自动将网页的静态资源(如图片、JavaScript、CSS等)存储在本地缓存中。...

    一键清IE缓存工具 自动批处理

    在日常使用互联网的过程中,浏览器会自动保存网页的各种数据,如图片、JavaScript文件、HTML代码等,这些数据就构成了IE缓存(Internet Explorer Cache)。IE缓存的主要目的是为了加快网页加载速度,当用户再次访问...

    ie cache提取

    **IE缓存提取详解** IE(Internet Explorer)作为曾经广泛使用的网页浏览器,其在用户浏览网页时会自动存储各种信息,包括HTML文件、图片、脚本等,这就是所谓的IE缓存。这些缓存数据可以用于回溯用户的网络活动,...

    IE缓存文件提取器

    IE缓存是浏览器为了提高网页加载速度而存储的临时文件,这些文件通常包含了用户在浏览网页时所访问的各种资源。 ### IE缓存的工作原理 当用户访问一个网页时,IE会将页面上的图片、脚本、样式表等静态内容保存在...

    Flex客户端IE浏览器缓存问题

    综上所述,解决Flex SWF文件在IE浏览器中的缓存问题,需要结合服务器端的HTTP响应头、Flash Player的特性、用户的浏览器设置以及可能的反向代理策略。开发者应尽量选择不影响整体用户体验,同时又能确保SWF文件始终...

    iehistory查看IE缓存

    3. **第三方工具**:市场上有一些专门的工具,如CacheViewer、IE Cache Explorer等,可以帮助用户更直观地查看和搜索IE缓存中的文件,包括访问过的网址、时间戳以及具体资源。 4. **手动查找**:在Windows系统中,...

    IE页面缓存问题jsp及servlet中的设置

    综上所述,IE页面缓存问题的解决不仅仅依赖于一种方法,而是需要结合JSP、Servlet以及HTML中的多种策略。通过合理设置响应头和HTML元信息,可以有效地控制页面的缓存行为,确保用户始终能够接收到最新的数据和最准确...

    利用WinInetAPI清除特定网站的IE缓存

    "WinInetAPI 清除 IE 缓存" WinInetAPI(Windows Internet API)是 Windows 操作系统中的一组 API,提供了访问 Internet 资源的功能。其中,WinInetAPI 提供了一个名为 `DeleteUrlCacheEntry` 的函数,用于删除指定...

    清除IE缓存的好工具

    标题中的“清除IE缓存的好工具”指的是一个用于便捷清理Internet Explorer浏览器缓存的实用程序。在网页浏览过程中,IE浏览器会自动存储网页的临时文件、图片和其他数据,以加快后续访问的速度。然而,这些缓存文件...

    windows7系统清理IE缓存的脚本

    ### Windows 7系统清理IE缓存的Batch脚本解析及应用 #### 一、脚本概述 在Windows 7操作系统中,Internet Explorer (IE) 浏览器是默认的浏览器之一。用户在浏览网页时,IE会将部分数据缓存在本地以加快网页加载...

    IE缓存清除

    然而,有时为了隐私保护、数据更新或者解决网页加载问题,我们需要清除浏览器缓存。本文将深入探讨IE(Internet Explorer)缓存清除的方法,以及它与JavaScript学习的关联。 **一、IE缓存的理解** IE缓存,全称为...

    消除浏览器的301重定向缓存

    但是,这种缓存机制也会带来一些问题,例如用户无法回到原始的URL,或者浏览器无法正确地显示用户所需的内容。 在本文中,我们将详细讲述如何消除浏览器的301重定向缓存,包括缓存的机理、问题的出现原因、解决方法...

    ie-cache英文版

    标题中的“ie-cache英文版”指的是与Internet Explorer(IE)浏览器缓存相关的英文资源或教程。在互联网浏览过程中,IE浏览器会自动缓存网页上的各种元素,包括图片、JavaScript文件、CSS样式表以及Flash动画等,以...

    C#动态清理缓存IE6Clear

    **标签“C# Webbrowers 清理缓存 IE”**明确指出了这个程序的主要功能和所涉及的技术点:使用C#处理WebBrowser控件,针对IE浏览器进行缓存清理。 至于压缩包中的文件"**IE6ClearCache**",很可能是实现上述功能的源...

    C# winform程序删除IE Cookies 缓存的类

    近期网上有很多网友寻找c#编写的使用于winform程序来清除IE Cookies和Cache的代码。 于是写了一个类,里面有一静态方法。只要在程序中调用 DeleteCache.ClearedIECache(); 便会将IE缓存和Cookies清除干净。

    VB删除IE缓存及cookies资源

    本文将深入探讨如何使用VB来删除Internet Explorer(IE)的缓存和Cookies资源,这对于保护用户隐私、优化浏览器性能以及解决某些网络问题是有必要的。 首先,我们需要了解什么是IE缓存和Cookies。IE缓存是浏览器...

Global site tag (gtag.js) - Google Analytics