问题:
当浏览器设置为“脱机工作”时,无法从applicationCache(脱机缓存)获取Fallback资源。
环境详情:
清单详情:
FALLBACK: / AppCacheDemo / Home / CarNew / Sandbox / Car / AppCacheDemo
如何触发离线模式:
演示应用程序详细信息:
附带的演示包含3页。
目标网页(/ AppCacheDemo / Home / Index),它是唯一具有清单文件属性的网页。由于具有manifest属性,它将自动放在applicationCache中。
网页的在线和相应的离线版本,分别是/ AppCacheDemo / Home / CarNew,/ AppCacheDemo / Home / CarNewOffline。
预期功能:
浏览器在请求/ AppCacheDemo / Home / Index时检测到清单属性的存在,并下载清单中列出的所有资源。
用户点击/ AppCacheDemo / Home / Index上存在的链接,并重定向到/ AppCacheDemo / Home / CarNew
当浏览器检测到互联网连接时,会向用户提供/ AppCacheDemo / Home / CarNew。如果未检测到Internet连接,则在向/ AppCacheDemo / Home / CarNew发出请求时,将从applicationCache提供/ AppCacheDemo / Home / CarNewOffline。
在Firefox中重现的步骤(实际功能):
根据about:cache?device = disk for / AppCacheDemo / Home / CarNew中列出的信息,Firefox似乎正在向用户提供该版本的页面。我期待/ AppCacheDemo / Home / CarNewOffline从applicationCache获得服务,因为我在我的清单中定义了一个回退规则,说明何时被请求/ AppCacheDemo / Home / CarNew并且不存在互联网连接,来自/ AppCacheDemo / Home / CarNewOffline来自applicationCache而不是。
在Firefox中重现的步骤(预期功能):
在执行以下步骤之前,请不要忘记取消选择“脱机工作”。
因为/ AppCacheDemo / Home / CarNew在磁盘缓存中不存在,所以FF尊重我的清单中定义的后备规则,而不是/ appCacheDemo / Home / CarNewOffline。如果我要
在IE中进行测试:
除了导航到about:cache之外,可以或多或少地遵循上述步骤。不同之处在于,当IE设置为“脱机工作”并且请求/ AppCacheDemo / Home / CarNew时,IE将显示一个页面,其中显示“此页面无法显示”消息。如果直接请求/ AppCacheDemo / Home / CarNewOffline,IE将为该页面提供服务。由于清单中指定了回退规则,我希望/ AppCacheDemo / Home / CarNewOffline可以获得服务,但事实并非如此。
在Safari / Chrome中进行测试:
Safari / Chrome没有“脱机工作”菜单项,因此在将navigator.onLine报告为false之前需要执行一些其他步骤。为了使浏览器处于真正的断开连接状态,我必须拔掉我的CAT 5电缆并断开与任何VPN的连接。但是,当/ AppCacheDemo / Home / CarNew没有可用的互联网连接时,将遵守回退规则和/ AppCacheDemo / Home / CarNewOffline。
AppCacheDemo项目(配置为使用IIS的Microsoft MVC 4 Web应用程序):
答案 0 :(得分:1)
事实证明,在Internet Explorer中测试AppCache有点令人沮丧。工作离线模式似乎存在一些问题,这些问题确实使调试成为一种痛苦。例如,当我通过这种方法测试一段时间后,我发现浏览器会检测到互联网连接,并自动上线以满足请求。这真让我烦恼。
我reached out到Eric Lawrence,Fiddler(Web调试器)的作者,以及Microsoft的过去项目经理。埃里克证实确实存在问题。我怀疑像Fiddler这样的工具可以解决这些疼痛,这在Eric撰写的一篇名为Testing HTML5 AppCache with Fiddler的Telerik网站上的博客文章中得到了证实。
Eric的建议对我有用,我能够使用Fiddler的AutoResponder功能在Internet Explorer中无问题地测试AppCache。我希望这对你也有帮助。