微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HTML5 AppCache:如果无法访问服务器但可以访问网络,如何实现脱机模式

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

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

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

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

解决方法

根据 application-cache specification,这是不可能的:

Otherwise,if fetching the manifest fails in some other way (e.g. the server returns another 4xx or 5xx response or equivalent,or there is a DNS error,or the connection times out,or the user cancels the download,or the parser for manifests fails when checking the magic signature),or if the server returned a redirect,or if the resource is labeled with a MIME type other than text/cache-manifest,then run the cache failure steps.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。