选择性清除HTML5应用程序缓存中的项目

时间:2012-11-26 19:28:06

标签: html5 caching manifest

HTML5应用程序缓存API要求浏览器重新加载清单文件的CACHE部分中声明的所有文件(当清单文件发生更改并在applicationCache API上调用更新时)。

我的清单文件包含数千个条目。是否有任何技巧告诉浏览器只重新加载已更改的文件?

1 个答案:

答案 0 :(得分:4)

由于缺乏对缓存清单中列出的文件的缓存行为的控制,我遇到了类似的问题。事实证明,使用iFrame可以控制此过程。

策略是将主缓存清单中列出的数千个文件划分为单独的(以及更易管理的缓存清单),然后创建大量虚拟HTML页面,每个页面都引用缓存清单。然后,对于每个虚拟HTML,您将链接到它的iFrame添加到主HTML文档中。您可以将iFrame放在一个不可见的div中,这将使该技巧对用户不可见。

当每个iFrame加载时,它会检查其各自的缓存清单。如果该缓存清单中的任何文件发生更改,则iFrame将仅缓存其子文件组。您可以智能地将相关文件组合在一起,具体取决于您希望它们更改的程度。

更好的是,您可以在用户交互的任何时刻在主HTML上动态插入iFrame,并且只有在加载iFrame时,才会触发缓存进度。