HTML5缓存Javascript文件,供在线和离线使用

时间:2011-07-19 09:12:54

标签: javascript html5 browser-cache offline-caching

我发布了一个question关于为什么我的$ .getJSON已经停止但是我认为问题现在有点宽了。

我有一个移动HTML5应用程序,可以对php web应用程序(在同一个域上)执行Ajax请求。当有互联网连接即。 navigator.onLine == true我对Web应用程序进行$ .getJSON调用,并将响应本地存储在设备浏览器的websql数据库中。

如果navigator.onLine == false,那么我想跳过json请求并在本地拉出数据。我的JSON工作,我在离线websql存储中成功存储,但我的问题来自添加缓存清单文件。

我不确定如何缓存我需要的东西。这是我的缓存清单:

CACHE MANIFEST

# rev 2

CACHE:
index.html
app.html
http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js
http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css
http://code.jquery.com/jquery-1.4.3.min.js
js/data.js 
js/script.js

我认为我可以假设我可以从code.jquery.com /中缓存外部文件。因为我需要他们在线和离线。

Eric在我之前的问题中发布了一个答案,说我应该在NETWORK下添加JS文件:最后用*标题。当我这样做时,我的JSON调用就像我想要的那样被触发。但是现在这些文件无法离线使用。

这似乎也有效,但当我离线时,甚至我的CSS都没有加载:

CACHE MANIFEST

# rev 2

CACHE:
index.html
app.html
js/data.js
http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js
http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css
http://code.jquery.com/jquery-1.4.3.min.js
js/script.js

NETWORK:
*

有人可以建议缓存javascript / css文件以供离线使用的最佳做法吗?

非常感谢,

比利

1 个答案:

答案 0 :(得分:0)

查看http://westciv.com/tools/manifestR/,它是用于创建应用所需的清单文件的绝佳工具。

AppCache要求您要在本地提供的所有内容都列在清单文件中,因此在这种情况下,您需要列出您的应用在离线体验中需要运行的所有JavaScript,CSS和任何其他文件。 ManifestR将帮助您找出该列表并为您构建它。

您的清单文件应如下所示:

CACHE MANIFEST
# rev 3

CACHE:
index.html
app.html
js/data.js
http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js
http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css
http://code.jquery.com/jquery-1.4.3.min.js
js/script.js
style.css
images.png

NETWORK:
*