chrome中的清单行为不稳定

时间:2011-01-27 19:11:46

标签: html caching google-chrome manifest

您是否曾在Chrome中按预期运行HTML缓存清单?我把一个小项目放在一起,显然效果不好。它很有效!

我已经创建了一个这样的HTML页面:

<html manifest="cache.manifest">
<body>
 test - <img src="img1.jpg" width="100" height="100">
</body>
</html>

这样的清单:

CACHE MANIFEST
#V1.0.22
img1.jpg

NETWORK:
*

同一文件夹中的2张图片:img1.jpg和img2.jpg。

当我交换我的图片时,img2 =&gt; img1并更新我的清单的版本号,Chrome会下载新版本并发送更新就绪事件。当我重新加载页面时,我在屏幕上得到了第二张图像,这是预期的。但是,如果我用原始图像覆盖img1,更新清单中的版本号并重新加载,Chrome会下载新清单和新文件,但即使我再次刷新页面也不会显示正确的图像! !如果我在那时清除缓存,我会得到正确的缓存,这也是我所期望的。我已经完成了10次而且不起作用。这真让我抓狂!似乎缓存替换无法正常工作!

如果您对此有所了解请告诉我。如果你愿意,我甚至可以通过电子邮件将你的文件发送给你。

干杯。

1 个答案:

答案 0 :(得分:0)

这很可能是cache.manifest缓存和普通浏览器缓存之间的错误交互。使用cache.manifest时,您的浏览器仍然遵循http标头中的普通浏览器缓存规则。所以会发生什么事情是你提供一个图像,它的标题表示可以将它缓存几小时或几天。它也被cache.manifest缓存。您在服务器上更新映像,并更改您的cache.manifest版本号。浏览器看到版本更改,清除cache.manifest,并正常请求图像。但正常情况下,在请求图像时,它首先检查浏览器缓存,然后将旧图像从那里拉出,而不是抓住服务器上的图像。然后它将这个旧图像粘贴回cache.manifest。因此,即使图像的缓存时间在浏览器缓存中过期,图像仍然不会更新,因为它现在再次缓存在cache.manifest中。

简而言之,cache.manifest和普通的浏览器缓存会产生非常糟糕的组合,因此您需要禁用浏览器缓存,以便将其放入cache.manifest文件中。您可以通过更改缓存标头在服务器上执行此操作。