2011-09-27 130 views
2

大师的SO缓存清单弥补我的应用程序时在线

我想玩CACHE MANIFEST/HTML5。我的应用程序是沉重的JS,并建立在jquery/jquerymobile上。

这是什么我的清单看起来像

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

但不知何故的摘录,应用程序不会加载在第一时间本身和整个应用程序分解的文件。

  • 我的格式错了吗?
  • 我是否永远不会将JS加载到缓存中?
  • 我应该如何处理这种不同的问题,以便始终首先检查网络,如果有任何不可用的情况,只加载缓存中可用的东西?

谢谢。

回答

0

我得到这个工作,以刷新缓存的唯一方法就是缓存声明重命名的提交数量或时间戳,清单文件,并切换到

<html manifest='mymanifest382330.manifest'>

我做的这部分我建立。

+0

只需再次阅读您的评论 - 不要以为你正在谈论我面临的同样的问题。不过谢谢。 – iUsable

+0

你不应该做任何像重命名清单那样激烈的事情。 [深入研究HTML5](http://diveintohtml5.org/offline.html)解释了缓存更新如何工作,并建议每当您更改站点时,都会使用包含修订号的注释更新缓存清单。这迫使浏览器请求所有文件的新版本。这应该比重命名文件和更新每个HTML页面更容易。 – mgiuca

2

我试着用你的缓存清单的一个简单的页面,它对我来说工作得很好,所以我不确定问题是什么。但是,

  1. 是的,格式有问题。 FALLBACK部分中的条目需要有两个部分:一个模式和一个URL。这表示“如果与该模式匹配的任何页面不能脱机使用,则显示URL(将被缓存)”。这个(as shown here)的主要例子是“/ /offline.html”,这意味着“对于所有页面,如果我们离线并且它们没有被缓存,则改为显示/offline.html”。但是,我不认为这是你的问题的根源,因为我用你的确切清单测试它,它仍然有效。
  2. 没有什么特别的JS文件。将它们加载到缓存中应该没问题。
  3. 我不明白第三个问题。这里可能有两个目标:a)如何在返回缓存之前先检查是否有可用的在线文件的新版本,以及b)如何检查网络以查看是否存在未缓存的文件,如果我们处于脱机状态,请回退到错误页面。 (a)的答案是,一旦打开了缓存清单,事情就会有很大的不同。它会从来没有检查文件的新版本,除非还有一个新版本的清单。因此,无论何时更改任何文件,您都必须始终更新清单。 (b)的答案是FALLBACK部分。

我们看看Dive Into HTML5在这个优秀的章节,特别是部分‘调试的艺术,又名‘杀了我!杀了我吧!’’这也解释了如何清单更新。

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

+0

另请注意,Chrome/Chromium浏览器会显示更多关于此的详细信息。转到开发人员工具并在Resources下,您可以转到Application Cache并找到您的服务器。它会告诉你缓存中的每个资源,以及什么类型的资源(主,清单,显式等)。此外,在网络下,您将能够看到它是从缓存还是从网络中提取资源。 – mgiuca

相关问题