Html 缓存清单在联机时会弄乱我的应用程序

Html 缓存清单在联机时会弄乱我的应用程序,html,caching,webkit,offline,Html,Caching,Webkit,Offline,SO大师 我正在尝试使用缓存清单/HTML5。我的应用程序是JS重型的,基于jquery/jquerymobile构建 这是我清单的摘录 CACHE MANIFEST FALLBACK: / NETWORK: * CACHE: /css/style.css /js/jquery.js 但不知何故,应用程序没有在第一次加载文件,整个应用程序都崩溃了 我的格式错了吗 我应该永远不要将JS加载到缓存中吗 如果有什么东西不可用,我应该如何区别对待,总是先检查网络,然后只从缓存中加载可用的东西 谢谢

SO大师

我正在尝试使用缓存清单/HTML5。我的应用程序是JS重型的,基于jquery/jquerymobile构建

这是我清单的摘录

CACHE MANIFEST
FALLBACK:
/
NETWORK:
*
CACHE:
/css/style.css
/js/jquery.js
但不知何故,应用程序没有在第一次加载文件,整个应用程序都崩溃了

  • 我的格式错了吗
  • 我应该永远不要将JS加载到缓存中吗
  • 如果有什么东西不可用,我应该如何区别对待,总是先检查网络,然后只从缓存中加载可用的东西

谢谢。

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


这是我构建的一部分。

我尝试了一个带有缓存清单的简单页面,它对我来说很好,所以我不确定问题出在哪里。但是,

  • 是的,格式有问题。回退部分中的条目需要有两部分:模式和URL。这表示“如果任何与该模式匹配的页面脱机时不可用,则显示URL(将被缓存)。”此()的主要示例是“//offline.html”,这意味着“对于所有页面,如果我们处于脱机状态且未被缓存,则显示/offline.html。”,我不认为这是你问题的根源,因为我用你的确切清单测试了它,它仍然有效
  • JS文件没有什么特别之处。可以将它们加载到缓存中
  • 我不明白第三个问题。这里可能有两个目标:a)在返回缓存之前,如何先检查是否有更新版本的文件在线可用;b)如何检查网络以查看是否有未缓存的文件,如果我们处于脱机状态,则返回错误页面。(a)的答案是,一旦打开缓存清单,事情的工作方式就大不相同了。它永远不会检查文件的新版本,除非清单也有新版本。因此,无论何时更改任何文件,都必须始终更新清单。(b)的答案是后备部分
  • 请参阅的优秀章节,特别是“调试的艺术,又称“杀了我!现在杀了我!”一节,它解释了清单是如何更新的


    此外,我认为我们还没有触及你问题的实质,因为不清楚你所说的“应用程序本身第一次不加载文件”是什么意思。哪些文件不加载?刷新后是否正确加载?等等。

    再看一遍你的评论,不要以为你在谈论我面临的问题。无论如何,谢谢。你不应该做任何像重命名清单这样激烈的事情。解释缓存更新的工作原理,并建议您在更改站点时,使用包含修订号的注释更新缓存清单。这将强制浏览器请求所有文件的新版本。这应该比重命名文件和更新每个HTML页面更容易。另外:请注意,Chrome/Chrome浏览器显示了更多关于此的详细信息。转到开发人员工具,在参考资料下,您可以转到应用程序缓存并找到您的服务器。它将告诉您缓存中的每个资源,以及资源的类型(主资源、清单资源、显式资源等)。此外,在“网络”下,您将能够看到它是从缓存还是从网络中提取资源。