【问题标题】:html5 appcache: does remote manifest file work?html5 appcache:远程清单文件有效吗?
【发布时间】:2011-08-11 17:21:35
【问题描述】:

我们的应用程序部署在物理设备上,因此起始页 index.html 位于设备的存储中,该文件将引用远程托管的 JavaScript 文件和其他资源。也就是说,index.html 本身并不托管在我们的 Web 服务器中。在这种情况下是否可以使用 html5 应用程序缓存?也就是说,html 元素看起来像这样:

<html manifest="http://remotehost.com/site.manifest">

支持吗?或者,如果我们的网络服务器未托管 index.html,是否有解决方法使其正常工作?

谢谢!

【问题讨论】:

  • 有这方面的消息吗?看起来不可能。你在用 phonegap 吗?

标签: html application-cache


【解决方案1】:

查看此网站了解基本要求和限制: http://appcachefacts.info/

当您的文件部署到设备的存储时,有几件事会阻止 appcache 工作:

  • Cross-Origin-Policy:您正在从另一个来源引用清单文件 -> 不允许
  • WebKit:我假设您呈现 index.html 的 WebView 是由 WebKit 驱动的(iOs/Android)。我在台式 PC 上使用 Safari 和 Chrome 进行了一些测试,发现如果 index.html 是从 http://localhostfile://... URL 提供的,即使清单遵守跨域策略,清单也会被忽略。这会影响到您,因为在大多数情况下,您设备上本地部署的 index.html 将由 file://... 提供服务。

所以我想出了将清单下载到设备并在我的 index.html 中引用它的想法。这导致了一些我无法解决的额外问题(我的设置是 PhoneGap、jQueryMobile、iOS):

  • Mime-Type:您无法确保清单(从设备存储中提供)提供了正确的 mime 类型标头,但如果没有它们,浏览器将忽略清单。
  • Manifest-URI:您无法(硬编码)分发具有预定义 manifest="uri/to/appCacheManifest.manifest" 属性的 index.html 文件(因为您需要在知道此 uri 之前从服务器下载并保存它)。此外,您无法操纵随 PhoneGap 应用程序(www 文件夹)分发的资产以某种方式更改属性。

到目前为止,我无法让清单在 PhoneGap WebView 中工作。我阅读了一些文章,其中人们提到(iOS)WebView 无法使用清单文件,但这是不正确的。如果您通过移动浏览器导航到 Web 应用程序并在主屏幕上保存书签,iOS 会将此站点嵌入到 WebView 中。我用我的应用程序(由网络服务器提供服务;未嵌入在 PhoneGap 中)尝试了这个,Manifest 工作得很好。

这意味着,如果您能够将“位于设备存储中”的文件移动到网络服务器,并且您将本机 WebView 设置为指向该位置,那么清单应该可以正常工作。

【讨论】:

  • 我遇到了类似的问题,想知道你是否解决了这个问题。我有一个包含设备上所有资产的 PhoneGap 应用程序。我希望能够更新其中一些资产,但由于跨域,无法使用清单。
  • 我也是,@speg 运气好吗?
猜你喜欢
  • 1970-01-01
  • 2015-06-25
  • 2015-08-16
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 2012-05-31
相关资源
最近更新 更多