6

根据设计,如果客户端设备离线或客户端设备在线且服务器可访问,则 HTML5 离线支持 (AppCache) 有效。之后,当设备无法访问互联网时,我缓存了应用程序并在浏览器中重新打开它(刷新它),浏览器从 AppCache 加载应用程序。在这种情况下,浏览器不会尝试获取 appcache 清单(它知道我们处于离线状态)。

但是让我们考虑一下我的设备未离线的情况。它仍然有互联网连接。但是我的服务器宕机了。这可能有很多不同的原因(硬件故障、AppPool 停止、IIS 限制、DNS 错误等)。在这种情况下,当我在浏览器中打开缓存的应用程序时,它会尝试获取 appcache 清单并得到 404 错误(未找到)。之后,浏览器会清除应用程序的 AppCache!所以在下一次运行时,它不会从 AppCache 加载它并显示 404 错误“页面”。不再需要离线工作。

离线模式的功能取决于无法访问服务器的原因,这对我来说看起来很奇怪。作为用户,我为什么要关心(没有互联网连接或服务器已关闭)?

所以我的问题是:当设备在线但无法访问其服务器时,是否有人知道使应用程序工作的任何方法?
理想情况下,我应该能够捕获 window.applicationCache 的错误事件并告诉它“没关系,请继续使用缓存,不要废弃它”。

4

1 回答 1

0

根据应用程序缓存规范,这是不可能的:

否则,如果获取清单以其他方式失败(例如,服务器返回另一个 4xx 或 5xx 响应或等效响应,或者存在 DNS 错误,或者连接超时,或者用户取消下载,或者清单解析器失败检查魔术签名时),或者如果服务器返回重定向,或者如果资源被标记为文本/缓存清单以外的 MIME 类型,则运行缓存失败步骤。

于 2015-06-15T13:15:07.543 回答