【问题标题】:Is ApplicationCache for FF/IE 10 fully implemented (or implemented correctly)?FF/IE 10 的 ApplicationCache 是否完全实现(或正确实现)?
【发布时间】:2013-01-13 16:37:07
【问题描述】:

问题:

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

环境详情:

  • Windows 7 64 位 SP 1
  • IE 10 版本。 10.0.9200.16438
  • Firefox 版本。 18.0.1
  • IIS 版本 7.5.7600.16385
  • .manifest MIME 类型为 text/cache-manifest

清单详情:

回退: /AppCacheDemo/Home/CarNew /Sandbox/Car/ AppCacheDemo

如何触发离线模式:

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

演示应用详情:

随附的演示包含 3 页。

登录页面 (/AppCacheDemo/Home/Index),它是唯一具有清单文件属性的页面。由于具有 manifest 属性,它会自动放在 applicationCache 中。

页面的在线版本和对应的离线版本,分别为/AppCacheDemo/Home/CarNew、/AppCacheDemo/Home/CarNewOffline。

预期功能:

浏览器在请求 /AppCacheDemo/Home/Index 时检测到 manifest 属性的存在,并下载 manifest 中列出的所有资源。

用户单击 /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:cache 并刷新页面。 一种。磁盘缓存条目数应列为 3(可能更多,具体取决于您的环境) 湾。离线缓存条目数应列为 3。
  6. 单击“磁盘缓存”部分下的“列出缓存条目”链接(或在新选项卡中打开链接)并注意没有指向 /AppCacheDemo/Home/CarNew 的条目
  7. 返回打开 /AppCacheDemo/Home/Index 的选项卡,然后单击“让我们建立一个新的汽车链接” 一种。您应该被重定向到 /AppCacheDemo/Home/CarNew
  8. 返回 about:cache?device=disk 并注意 /AppCacheDemo/Home/CarNew 存在一个新条目,它的 Fetch count 列为 1。
  9. 停止 IIS
  10. 从文件菜单中选择“脱机工作”菜单项
  11. 刷新当前页面(/AppCacheDemo/Home/CarNew)
  12. 返回 about:cache?device=disk 并注意 /AppCacheDemo/Home/CarNew 存在一个新条目,它的 Fetch count 现在列在 2 处。

根据 /AppCacheDemo/Home/CarNew 的 about:cache?device=disk 中列出的信息,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:cache 并刷新页面。 一种。磁盘缓存条目数应列为 3(可能更多,具体取决于您的环境)。 一种。离线缓存条目数应列为 3。
  6. 单击“磁盘缓存”部分下的“列出缓存条目”链接(或在新选项卡中打开链接)并注意没有指向 /AppCacheDemo/Home/CarNew 的条目
  7. 停止 IIS
  8. 从文件菜单中选择“脱机工作”菜单项
  9. 在地址栏中键入 /AppCacheDemo/Home/CarNew。 一种。您应该被重定向到 /AppCacheDemo/Home/CarNewOffline。地址栏中的 URL 仍应为 /AppCacheDemo/Home/CarNew,但文档内容应为 /AppCacheDemo/Home/CarNewOffline
  10. 在新选项卡中,请求 about:cache?device=disk 并注意 /AppCacheDemo/Home/CarNew 不存在任何条目。

因为 /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 项目(Microsoft MVC 4 Web 应用程序配置为使用 IIS):

http://www.filedropper.com/appcachedemo

【问题讨论】:

  • 您是否为清单使用了正确的 MIME 类型?
  • text/cache-manifest 是我让 IIS 提供 .manifest 文件的内容。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 2020-11-22
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多