【问题标题】:HTML5 Cache Manifest How To request that a cached file should be viewed online if possible?HTML5 缓存清单 如果可能,如何请求在线查看缓存文件?
【发布时间】:2012-03-11 21:04:12
【问题描述】:

我正在为 iPhone 开发一个 Web HTML5 应用程序,但我遇到了一个相当奇怪的情况。我需要缓存整个内容以供离线使用,这很好,但问题是,当您稍后在线时,它仍然使用缓存版本。我需要该应用尽可能使用在线版本而不是缓存版本,但我找不到任何有关这样做的信息。

提前致谢!

【问题讨论】:

标签: html web-applications manifest cache-manifest


【解决方案1】:

我不知道你使用的是什么框架,但是在 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);
});

【讨论】:

  • 因此,如果应用程序在线但在我访问 www.example.com/index.html 时缓存了例如 index.html 的副本,除非用户删除 index.html,否则您将无法访问它从他们的缓存中?
  • 除了一点jquery mobile,我没有使用任何框架,但仅在必要时使用。
  • 有两个缓存。页面和图像的浏览器缓存。然后是应用程序缓存。如果您在清单文件中指定资产,它将为应用程序缓存。它将是保存在本地设备上的应用程序的一部分。因此,如果您将 javascript 文件声明为应用程序的一部分,它将缓存该 js 文件。您的 index.html 示例将自动缓存在浏览器中,除非您在清单文件中声明它。浏览器缓存的问题是它将遵守您为其设置的设置。
  • 因此,由于该 html 文件不在清单中,因此您的浏览器将负责缓存。
  • 仍然没有办法告诉网络应用在可用时使用在线内容或缓存版本?
猜你喜欢
  • 2012-10-23
  • 2012-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-13
  • 2013-12-26
相关资源
最近更新 更多