【发布时间】:2012-03-11 21:04:12
【问题描述】:
我正在为 iPhone 开发一个 Web HTML5 应用程序,但我遇到了一个相当奇怪的情况。我需要缓存整个内容以供离线使用,这很好,但问题是,当您稍后在线时,它仍然使用缓存版本。我需要该应用尽可能使用在线版本而不是缓存版本,但我找不到任何有关这样做的信息。
提前致谢!
【问题讨论】:
标签: html web-applications manifest cache-manifest
我正在为 iPhone 开发一个 Web HTML5 应用程序,但我遇到了一个相当奇怪的情况。我需要缓存整个内容以供离线使用,这很好,但问题是,当您稍后在线时,它仍然使用缓存版本。我需要该应用尽可能使用在线版本而不是缓存版本,但我找不到任何有关这样做的信息。
提前致谢!
【问题讨论】:
标签: html web-applications manifest cache-manifest
我不知道你使用的是什么框架,但是在 Sencha 中,你需要通过执行以下操作来指定使用网络:
NETWORK:
*
如果您的清单文件中有内容,它将始终使用该缓存副本,这就是您所遇到的。这是清单文件中项目的默认行为。
现在,它变得有点棘手了。
文章:http://www.sencha.com/learn/taking-sencha-touch-apps-offline/
在这个 Sencha 离线示例中,他们为缓存数据库设置了代理,然后在浏览器缓存和本地存储之间切换。
然后,您想创建一个没有超时的侦听器来检测您是离线还是在线。
如果超时,则使用本地代理。像这样:
this.onlineStore.addListener('load', function () {
console.log("I think we are online");
helloWorld.offlineStore.proxy.clear();
this.each(function (record) {
var photo = helloWorld.offlineStore.add(record.data)[0];
});
helloWorld.offlineStore.sync();
helloWorld.gallery.bindStore(helloWorld.offlineStore);
});
【讨论】: