iPad离线应用程序上的HTML5应用程序缓存-如果服务器不可用,是否不工作?

iPad离线应用程序上的HTML5应用程序缓存-如果服务器不可用,是否不工作?,ipad,html,offline-caching,application-cache,Ipad,Html,Offline Caching,Application Cache,我正在为iPad开发一个小型HTML5网络应用程序,该应用程序旨在全屏模式下工作(即,它有专有的Apple meta标签,添加到主屏幕): 应用程序基本上通过AJAX获取一些数据并将其呈现给用户。AJAX数据是外部的(来自不同的域、不同的服务器)。我有跨源请求的系统设置,它们在联机模式下工作。换句话说:静态数据位于服务器A上,动态数据位于服务器B上 我创建了一个合适的缓存清单文件,列出了站点的所有静态内容(HTML、CSS、图像、JS),然后在最后有网络:部分-这样所有的动态内容(AJAX)

我正在为iPad开发一个小型HTML5网络应用程序,该应用程序旨在全屏模式下工作(即,它有专有的Apple meta标签,添加到主屏幕):


应用程序基本上通过AJAX获取一些数据并将其呈现给用户。AJAX数据是外部的(来自不同的域、不同的服务器)。我有跨源请求的系统设置,它们在联机模式下工作。换句话说:静态数据位于服务器A上,动态数据位于服务器B上

我创建了一个合适的缓存清单文件,列出了站点的所有静态内容(HTML、CSS、图像、JS),然后在最后有
网络:
部分-这样所有的动态内容(AJAX)总是从网络中检索。如果请求失败,应用程序将“正常地”失败,因为它会显示一些虚假内容

通过上述设置,将发生以下情况:

  • 如果我在线运行应用程序,一切正常;)
  • 如果我在iPad上禁用WiFi(纯脱机模式),一切都会按预期运行-应用程序会返回到脱机内容

  • 如果我再次连接到网络,但使静态content server脱机(将所有内容缓存在一起的服务器),应用程序将无法启动;在启动屏幕上花了一段时间后,它向我显示了一个弹出窗口,
    完全不正确?如果没有,我如何在iPad上实现这种行为?

    第2点和第3点是完全不同的场景,因此我们不能期望相同的行为

    在第3点中,当处于联机模式时,设备不能退回到缓存内容,因为如果这样做,用户将无法知道他是否连接到服务器

    我的意思是,在脱机模式下,用户知道这一点,并且知道他正在处理缓存的数据。但在在线模式下,他希望从服务器上获取这些东西。如果服务器不可用,用户应该知道这一点。如果服务器不可用,并且他被直接发送到缓存数据,服务器错误将对他隐藏,认为他已连接,而实际上他没有连接


    例如,web浏览器可以缓存要在脱机模式下查看的页面。但是,如果我们处于联机模式并尝试打开不可用的页面,我们希望看到错误消息,而不是没有任何警告的页面的缓存版本。如果需要,我们可以转到脱机模式查看缓存页面,但正确的行为是向用户显示错误。

    如果我以联机模式打开页面,我仍然会显示所有内容的缓存版本,因为它在清单文件中被指定为缓存版本。“动态内容”在清单文件的
    网络:
    部分指定。请阅读有关HTML5应用程序缓存及其行为的信息。在场景3中,iPad只能检索的唯一文件实际上是
    cache.manifest
    文件;我想知道是否有办法将行为设置为“如果清单文件不可用,请使用以前的清单文件”,而不是失败。
    <meta name="apple-mobile-web-app-capable" content="yes" />