javascript - IE动态图片缓存问题?

标签 javascript html internet-explorer jsp tomcat

我有一个加载多个 iframe 的 html 页面,其中嵌入了从 Tomcat 服务器页面 (.jsp) 创建的动态图像。这与 Chrome 和 Firefox 的预期一样有效,但出于某种原因,IE 显示所有图像(如第一张图像)。我创建了一个示例:

http://coupondiscounts.com/jsImageTest.html

jsImageTest.html -- 此页面使用 Javascript 在单独的 iframe 中一次加载 testImageFrame.html 页面的 6 个实例。
testImageFrame.html -- 这是在所有 iframe 中加载的页面。它只包含一个写出当前时间的 JavaScript block 和一个 img 标签。 img 由不同服务器上的 .jsp 页面动态生成。它应该是黑色背景上的白色框。框中是当前时间(来自使用 Java 的 Tomcat 服务器)和随机创建的介于 0 和 1 之间的 double 。

发生了什么(在 IE 中): 该页面几乎立即加载了四个相同的 iframe。根据您机器的速度,JavaScript 时间可能会相差一两秒。图像的时间都将与随机数相同。即使最后两个 iframe 在其他 iframe 之后加载 5 秒和 10 秒(使用 JavaScript setTimeout())也是如此。
应该发生什么(就像在 Chrome 和 FF 中一样): 页面加载相同的 4 个 iframe,但图像中的随机数将不同。图像中的时间偶尔也会跨越一秒钟。

有人知道这里发生了什么吗? IE 是否在做一些奇怪的缓存?图像标题有“无缓存”、“无存储”等等。我已经在 IE6 和 7 上试过了。您可以使用“下一步”按钮创建另一个 iframe。在 IE 中,图像总是相同的。

注意: 我真的不需要 iframe,只需要图像,但如果我只使用 img 标签,问题也会出现在 Chrome 和 FF 中。我也不需要动态加载这些 iframe,我只是想进一步抽象问题并允许延迟加载后 2 个图像。

最佳答案

MSIE 在缓存方面非常出色。这里的问题是它不遵守执行 JS 代码的“父”HTML 页面的 header 中指定的缓存指令。

您的特定问题可以通过向查询字符串添加时间戳来解决。

ifr.src = 'testImageFrame.html?' + new Date().getTime();

强制 MSIE 从 JS 触发一个全新的 GET 请求。

关于javascript - IE动态图片缓存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3041124/

相关文章:

javascript - 为什么我的 Angular 拦截器没有正确缩小?

javascript - 在三星智能电视上运行基于 Cordova/Phonegap 的应用程序

javascript - 使用 JavaScript 在 Internet Explorer 中插入外部 CSS

html - 使用 :focus to create a CSS toggle 时忽略光标样式

c++ - 如何删除 Vista/Win7 上的 IE 地址栏历史记录?

html - 下拉菜单列表在 IE9 中失去焦点

javascript - 通过 HTML 输入字段动态输入 Highcharts?

javascript - Jasmine spy 调用的问题

javascript - MongoDB 聚合 - 放松、分组和项目

PHP mail() 函数 ... 已发送空邮件