ApplicationCache for FF / IE 10是否完全实现(或正确实施)?

时间:2013-01-29 23:48:34

标签: firefox internet-explorer-10 application-cache

问题:

当浏览器设置为“脱机工作”时,无法从applicationCache(脱机缓存)获取Fallback资源。

环境详情:

  • Windows 7 64位SP 1
  • IE 10 ver。 10.0.9200.16438
  • Firefox版。 18.0.1
  • IIS ver 7.5.7600.16385
  • .manifest MIME Type是text / cache-manifest

清单详情:

FALLBACK: / AppCacheDemo / Home / CarNew / Sandbox / Car / AppCacheDemo

如何触发离线模式:

  • IIS已停止
  • 选择了“文件”菜单中的“脱机工作”菜单项

演示应用程序详细信息:

附带的演示包含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中重现的步骤(实际功能):

  1. 打开FF并清除缓存(alt + ctrl + delete)。
  2. 请求:缓存 一个。请注意,磁盘/脱机缓存中列出的“条目数”均列为零。
  3. 一个新标签和请求/ AppCacheDemo / Home / Index
  4. 单击“允许”按钮以允许Firefox存储脱机数据。
  5. 返回about:缓存并刷新页面。 一个。磁盘缓存条目数应列为3(可能更多取决于您的环境) 湾脱机缓存条目数应列为3。
  6. 点击“磁盘缓存”部分下的“列出缓存条目”链接(或在新选项卡中打开链接),注意没有指向/ AppCacheDemo / Home / CarNew的条目
  7. 返回打开/ AppCacheDemo / Home / Index的选项卡,然后单击“让我们建立新车链接” 一个。您应该被重定向到/ AppCacheDemo / Home / CarNew
  8. 返回about:cache?device = disk并注意到/ AppCacheDemo / Home / CarNew存在一个新条目,并且它的获取计数列为1。
  9. 停止IIS
  10. 从文件菜单
  11. 中选择“脱机工作”菜单项
  12. 刷新当前页面(/ AppCacheDemo / Home / CarNew)
  13. 返回about:cache?device = disk并注意到/ AppCacheDemo / Home / CarNew存在一个新条目,它的获取计数现在列在2。
  14. 根据about:cache?device = disk for / AppCacheDemo / Home / CarNew中列出的信息,Firefox似乎正在向用户提供该版本的页面。我期待/ AppCacheDemo / Home / CarNewOffline从applicationCache获得服务,因为我在我的清单中定义了一个回退规则,说明何时被请求/ AppCacheDemo / Home / CarNew并且不存在互联网连接,来自/ AppCacheDemo / Home / CarNewOffline来自applicationCache而不是。

    在Firefox中重现的步骤(预期功能):

    在执行以下步骤之前,请不要忘记取消选择“脱机工作”。

    1. 打开FF并清除缓存(alt + ctrl + delete)。
    2. 请求:缓存 一个。请注意,磁盘/脱机缓存中列出的“条目数”均列为零。
    3. 一个新标签和请求/ AppCacheDemo / Home / Index
    4. 单击“允许”按钮以允许Firefox存储脱机数据。
    5. 返回about:缓存并刷新页面。 一个。磁盘缓存条目数应列为3(可能更多取决于您的环境)。 一个。脱机缓存条目数应列为3。
    6. 点击“磁盘缓存”部分下的“列出缓存条目”链接(或在新选项卡中打开链接),注意没有指向/ AppCacheDemo / Home / CarNew的条目
    7. 停止IIS
    8. 从文件菜单
    9. 中选择“脱机工作”菜单项
    10. 在地址栏中键入/ AppCacheDemo / Home / CarNew。 一个。您应该被重定向到/ AppCacheDemo / Home / CarNewOffline。地址栏中的URL仍应读取/ AppCacheDemo / Home / CarNew,但文档内容应为/ AppCacheDemo / Home / CarNewOffline
    11. 在新标签中,请求:cache?device = disk,并注意/ AppCacheDemo / Home / CarNew是否存在没有。
    12. 因为/ 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

1 个答案:

答案 0 :(得分:1)

事实证明,在Internet Explorer中测试AppCache有点令人沮丧。工作离线模式似乎存在一些问题,这些问题确实使调试成为一种痛苦。例如,当我通过这种方法测试一段时间后,我发现浏览器会检测到互联网连接,并自动上线以满足请求。这真让我烦恼。

reached outEric LawrenceFiddler(Web调试器)的作者,以及Microsoft的过去项目经理。埃里克证实确实存在问题。我怀疑像Fiddler这样的工具可以解决这些疼痛,这在Eric撰写的一篇名为Testing HTML5 AppCache with Fiddler的Telerik网站上的博客文章中得到了证实。

Eric的建议对我有用,我能够使用Fiddler的AutoResponder功能在Internet Explorer中无问题地测试AppCache。我希望这对你也有帮助。