HTML5 应用程序缓存 API 要求浏览器重新加载清单文件的 CACHE 部分中声明的所有文件(当清单文件已更改并在 applicationCache API 上调用更新时)。
我的清单文件包含数千个条目。是否有任何技巧可以告诉浏览器只重新加载已更改的文件?
由于缺乏对缓存清单中列出的文件的缓存行为的控制,我遇到了类似的问题。事实证明,您可以通过使用 iFrame 来控制此过程。
策略是将主缓存清单中列出的数千个文件分成单独的(并且更易于管理的缓存清单),然后创建许多虚拟 HTML 页面,每个页面都引用一个缓存清单。然后,对于每个虚拟 HTML,您将一个 iFrame 链接添加到您的主 HTML 文档中。您可以将 iFrame 放在一个不可见的 div 中,这将使该技巧对用户不可见。
当每个 iFrame 加载时,它会检查其单独的缓存清单。如果该缓存清单中的任何文件发生更改,则 iFrame 将仅缓存其文件子组。您可以智能地将相关文件组合在一起,具体取决于您希望它们发生多大的变化。
更好的是,您可以在用户交互的任何时候在主 HTML 上动态插入 iFrame,并且只有在加载 iFrame 时,才会触发缓存进度。