按设计HTML5脱机支持(AppCache)可在客户端设备脱机或客户端设备联机且服务器可访问时运行。之后我缓存了应用程序并在浏览器(刷新它)中重新打开它,当设备无法访问互联网时,浏览器从AppCache加载应用程序。在这种情况下,浏览器不会尝试来获取appcache清单(它了解我们已离线)。
但是让我们考虑一下我的设备没有脱机的情况。它仍然有互联网连接。但是我的服务器坏了。可能有许多不同的原因(硬件故障,AppPool停止,IIS限制,DNS错误等)。在这种情况下,当我在浏览器中打开缓存的应用程序时,它将尝试获取appcache清单并获得404错误(未找到)。然后浏览器清除应用程序的AppCache!因此,在下一次运行时,它不会从AppCache加载它并显示404错误“page”。没有更多的离线工作。
离线模式功能取决于服务器无法访问的原因对我来说很奇怪。我为什么要关心用户(没有互联网连接或服务器关闭)?
所以我的问题是:当设备 在线但其服务器无法访问时,是否有人知道如何使应用程序正常工作?
理想情况下,我应该能够捕获window.applicationCache的错误事件并告诉它“没关系,请继续使用缓存,不要废弃它”。
答案 0 :(得分:0)
根据application-cache specification:
,这是不可能的否则,如果以其他方式获取清单失败(例如,服务器返回另一个4xx或5xx响应或等效,或者存在DNS错误,或连接超时,或者用户取消下载,或解析器如果检查魔术签名时清单失败,或者服务器返回重定向,或者资源标记为text / cache-manifest以外的MIME类型,则运行缓存失败步骤。