2012-03-10 86 views
0

我正在开发iPhone的Web HTML5应用程序,我陷入了一个相当奇怪的境地。我需要将整个事件缓存为脱机使用,这很好,但事情是,当您以后联机时,它仍然使用缓存版本。我需要应用程序才能使用在线版本而不是缓存版本,但我无法找到任何有关此信息的信息。HTML5缓存清单如何请求一个缓存文件如果可能的话应联机查看?

在此先感谢!

+0

[HTML5的应用缓存只-当脱机]的复制(http://stackoverflow.com/questions/9343908/html5-use-cache-only-when-offline)。 – pyramids 2014-04-13 15:27:45

回答

1

我不知道你用的是什么框架,但在煎茶,你需要指定由做这样的事情来使用网络:

NETWORK: 
* 

如果你有东西在你的清单文件,它将始终使用该缓存副本,这正是您正在经历的。所以这是清单文件中项目的默认行为。

现在,它变得有点棘手。

文章:http://www.sencha.com/learn/taking-sencha-touch-apps-offline/

在这个煎茶离线例如,他们设置缓存的数据库代理,然后浏览器缓存和本地存储之间进行切换。

然后,您希望创建一个没有超时的侦听器来检测您是否脱机或联机。

如果超时,则使用本地代理。就像这样:

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); 
}); 
+0

因此,如果某个应用程序在线,但在访问www.example.com/index.html时缓存了一个index.html副本,则除非用户从其缓存中删除index.html,否则无法访问该应用程序。 – 2012-03-10 21:55:02

+0

我没有使用任何框架,只是有点jquery移动,但只有当它是必要的。 – 2012-03-10 21:55:58

+0

有两个缓存。浏览器缓存页面和图像。然后是应用程序缓存。如果您在清单文件中指定资产,它将被缓存用于应用程序。它将成为保存在本地设备上的应用程序的一部分。所以如果你声明一个JavaScript文件作为应用程序的一部分,它会缓存该js文件。您的index.html示例将自动缓存在浏览器中,除非您在清单文件中声明它。浏览器缓存的优势在于它会遵守您为其设置的设置。 – User970008 2012-03-11 00:56:23