我有一个加载多个 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/