缓存清单在线时会弄乱我的应用程序

时间:2011-09-27 14:19:52

标签: html5 caching webkit offline

SO的大师

我正在尝试使用CACHE MANIFEST / HTML5。我的应用程序是JS重,并建立在jquery / jquerymobile上。

这是我的Manifest看起来像

的摘录
CACHE MANIFEST
FALLBACK:
/
NETWORK:
*
CACHE:
/css/style.css
/js/jquery.js

但不知何故,应用程序不会在第一次加载文件时整个应用程序崩溃。

  • 我的格式错了吗?
  • 我是否永远不会将JS加载到缓存中?
  • 我应该如何区别对待,如果有什么不可用的话,请先检查网络,只加载缓存中的内容?

谢谢。

2 个答案:

答案 0 :(得分:2)

我尝试了一个包含缓存清单的简单页面,它对我来说很好,所以我不确定问题是什么。但是,

  1. 是的,格式有问题。 FALLBACK部分中的条目需要包含两个部分:模式和URL。这表示“如果任何与该模式匹配的页面不能脱机使用,则显示URL(将被缓存)。”这个(as shown here)的主要示例是“/ / offline.html”,这意味着“对于所有页面,如果我们处于脱机状态且未缓存,请显示/offline.html”。但是,我不认为这是您的问题的根源,因为我使用您的确切清单对其进行了测试,但仍然有效。
  2. JS文件没什么特别之处。将它们加载到缓存中应该没问题。
  3. 我不明白第三个问题。这里可能有两个目标:a)在返回缓存之前,如何检查是否有新版本的文件在线可用,以及b)如何检查网络以查看是否存在未缓存的文件,如果我们处于脱机状态,则返回错误页面。 (a)的答案是,一旦打开缓存清单,事情的工作方式就会大不相同。它将从不检查文件的新版本,除非还有新版本的清单。因此,每当更改任何文件时,您都必须始终更新清单。 (b)的答案是FALLBACK部分。
  4. 请参阅Dive Into HTML5关于此的精彩章节,特别是“调试的艺术,a.k.a。”部分。杀​​了我!现在杀了我!“”解释了清单如何更新。

    此外,我不认为我们已经解决了你的问题,因为我们不清楚你的意思是“应用程序不会第一次加载文件”。哪些文件无法加载?刷新后它们是否正确加载?等

答案 1 :(得分:0)

我使用它来刷新缓存的唯一方法是使用提交编号或时间戳重命名清单文件,并将缓存声明更改为

<html manifest='mymanifest382330.manifest'>

我制作了这部分内容。