问题:
当浏览器设置为“脱机工作”时,无法从applicationCache(脱机缓存)获取后备资源。
环境详细信息:
清单详细信息:
倒退:
/ AppCacheDemo /主页/汽车新功能/沙箱/汽车/ AppCacheDemo
如何触发离线模式:
演示应用程序详细信息:
随附的演示包括3页。
登陆页面(/ AppCacheDemo / Home / Index)是唯一具有清单文件属性的页面。由于具有清单属性,因此它将自动放置在applicationCache中。
页面的在线版本和相应的离线版本分别为/ AppCacheDemo / Home / CarNew,/ AppCacheDemo / Home / CarNewOffline。
预期功能:
浏览器在请求/ AppCacheDemo / Home / Index时检测到清单属性的存在,并下载清单中列出的所有资源。
用户单击/ AppCacheDemo / Home / Index上存在的链接,然后将其重定向到/ AppCacheDemo / Home / CarNew
当浏览器检测到Internet连接时,会将/ AppCacheDemo / Home / CarNew提供给用户。如果未检测到Internet连接,则在向/ AppCacheDemo / Home / CarNew发出请求时,会从applicationCache提供/ AppCacheDemo / Home / CarNewOffline。
在Firefox中重现的步骤(实际功能):
一种。请注意,磁盘/脱机缓存中列出的“条目数”都列为零。
一种。磁盘高速缓存条目数应列为3(根据您的环境可能更多)
b。脱机缓存条目数应列为3。
一种。您应该重定向到/ AppCacheDemo / Home / CarNew
根据/ AppCacheDemo / Home / CarNew的about:cache?device = disk中列出的信息,Firefox似乎正在为用户提供该版本的页面。我期望/ AppCacheDemo / Home / CarNewOffline可以从applicationCache获得服务,因为我在清单中定义了一个回退规则,该规则指出了何时请求/ AppCacheDemo / Home / CarNew且不存在互联网连接,因此请从改为使用applicationCache。
在Firefox中重现的步骤(预期功能):
在执行以下步骤之前,请不要忘记取消选择“脱机工作”。
一种。请注意,磁盘/脱机缓存中列出的“条目数”都列为零。
一种。磁盘缓存条目数应列为3(具体取决于您的环境)。
一种。脱机缓存条目数应列为3。
一种。您应该重定向到/ AppCacheDemo / Home / CarNewOffline。地址栏中的URL仍应为/ AppCacheDemo / Home / CarNew,但文档的内容应为/ AppCacheDemo / Home / CarNewOffline
因为/ 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应用程序):
http://www.filedropper.com/appcachedemo
最佳答案
事实证明,在Internet Explorer中测试AppCache有点令人沮丧。似乎“脱机工作”模式存在一些问题,这些问题确实使调试变得很麻烦。例如,当我前一段时间通过这种方法进行测试时,我发现浏览器将检测到Internet连接,并自动联机以满足要求。这真让我烦恼。
我是reached out到Eric Lawrence的作者,是Fiddler(Web调试器)的作者,也是微软的前项目经理。埃里克(Eric)确认确实存在问题。我怀疑像Fiddler这样的工具可以补救这些疼痛,这在Eric在Telerik网站上写的名为Testing HTML5 AppCache with Fiddler的博客文章中得到了证实。
Eric的建议对我有用,并且我能够使用Fiddler的AutoResponder功能在Internet Explorer中测试AppCache而不会出现问题。希望对您有帮助。
关于firefox - FF/IE 10的ApplicationCache是否已完全实现(或正确实现)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14594239/