HTML5 AppCache:如果服务器不是';不可访问,但网络可访问

HTML5 AppCache:如果服务器不是';不可访问,但网络可访问,html,html5-appcache,offlineapps,Html,Html5 Appcache,Offlineapps,根据设计,如果客户端设备处于脱机状态,或者客户端设备处于联机状态且服务器可访问,HTML5脱机支持(AppCache)就可以工作。之后,我缓存了应用程序并在浏览器中重新打开它(刷新它),当设备无法访问internet时,浏览器将从AppCache加载应用程序。在这种情况下,浏览器不会尝试获取appcache清单(它知道我们处于脱机状态) 但是让我们考虑一个设备不脱机的情况。它仍然有互联网连接。但是我的服务器坏了。这可能有许多不同的原因(硬件故障、AppPool停止、IIS限制、DNS错误等)。在

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

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

对我来说,脱机模式的运行取决于服务器无法访问的原因,这看起来很奇怪。作为一个用户,我为什么要关心(没有互联网连接或服务器关闭)

所以我的问题是:当设备在线但无法访问其服务器时,有人知道如何使应用程序工作吗?

理想情况下,我应该能够捕获window.applicationCache的错误事件,并告诉它“没问题,请继续使用缓存,不要将其作废”。

这是不可能的,因为:

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


什么浏览器,我只是在Chrome上做的,我的缓存清单还在那里。关闭服务器但保持在线,获取错误:应用程序缓存错误事件:清单获取失败(-1),但Chrome没有删除我的原始清单。我正在使用Chrome 24。我在上一个Firefox中也有同样的行为。关闭服务器时浏览器的http状态是什么?我的是404,我在Fiddler中看到了。在浏览器的控制台中,我看到以下内容:文档是从应用程序缓存加载的,其中包含清单应用程序缓存检查事件应用程序缓存过时事件有相关消息吗?我现在也面临同样的问题。