firefox - FF/IE 10的ApplicationCache是​​否已完全实现(或正确实现)?

标签 firefox internet-explorer-10 application-cache

问题:

当浏览器设置为“脱机工作”时,无法从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 /主页/汽车新功能/沙箱/汽车/ AppCacheDemo

    如何触发离线模式:
  • IIS已停止
  • 从文件菜单中选择
  • 脱机工作菜单项

  • 演示应用程序详细信息:

    随附的演示包括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中重现的步骤(实际功能):
  • 打开FF并清除缓存(alt + ctrl +删除)。
  • 请求about:cache
    一种。请注意,磁盘/脱机缓存中列出的“条目数”都列为零。
  • 一个新标签页并请求/ AppCacheDemo / Home / Index
  • 单击“允许”按钮以允许Firefox存储脱机数据。
  • 返回到about:cache并刷新页面。
    一种。磁盘高速缓存条目数应列为3(根据您的环境可能更多)
    b。脱机缓存条目数应列为3。
  • 单击“磁盘缓存”部分下的“列出缓存条目”链接(或在新选项卡中打开链接),并注意没有指向/ AppCacheDemo / Home / CarNew的条目
  • 返回打开/ AppCacheDemo / Home / Index的标签,然后点击“让我们建立新的汽车链接”
    一种。您应该重定向到/ AppCacheDemo / Home / CarNew
  • 返回到about:cache?device = disk,请注意/ AppCacheDemo / Home / CarNew存在一个新条目,其访存计数列为1。
  • 停止IIS
  • 从文件菜单
  • 中选择“脱机工作”菜单项
  • 刷新当前页面(/ AppCacheDemo / Home / CarNew)
  • 返回到about:cache?device = disk,请注意/ AppCacheDemo / Home / CarNew存在一个新条目,并且Fetch计数现在列于2。

  • 根据/ AppCacheDemo / Home / CarNew的about:cache?device = disk中列出的信息,Firefox似乎正在为用户提供该版本的页面。我期望/ AppCacheDemo / Home / CarNewOffline可以从applicationCache获得服务,因为我在清单中定义了一个回退规则,该规则指出了何时请求/ AppCacheDemo / Home / CarNew且不存在互联网连接,因此请从改为使用applicationCache。

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

    在执行以下步骤之前,请不要忘记取消选择“脱机工作”。
  • 打开FF并清除缓存(alt + ctrl +删除)。
  • 请求about:cache
    一种。请注意,磁盘/脱机缓存中列出的“条目数”都列为零。
  • 一个新标签页并请求/ AppCacheDemo / Home / Index
  • 单击“允许”按钮以允许Firefox存储脱机数据。
  • 返回到about:cache并刷新页面。
    一种。磁盘缓存条目数应列为3(具体取决于您的环境)。
    一种。脱机缓存条目数应列为3。
  • 单击“磁盘缓存”部分下的“列出缓存条目”链接(或在新选项卡中打开链接),并注意没有指向/ AppCacheDemo / Home / CarNew的条目
  • 停止IIS
  • 从文件菜单
  • 中选择“脱机工作”菜单项
  • 在地址栏中键入/ AppCacheDemo / Home / CarNew。
    一种。您应该重定向到/ AppCacheDemo / Home / CarNewOffline。地址栏中的URL仍应为/ AppCacheDemo / Home / CarNew,但文档的内容应为/ AppCacheDemo / Home / CarNewOffline
  • 在新选项卡中,请求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项目(配置为使用IIS的Microsoft MVC 4 Web应用程序):

    http://www.filedropper.com/appcachedemo

    最佳答案

    事实证明,在Internet Explorer中测试AppCache有点令人沮丧。似乎“脱机工作”模式存在一些问题,这些问题确实使调试变得很麻烦。例如,当我前一段时间通过这种方法进行测试时,我发现浏览器将检测到Internet连接,并自动联机以满足要求。这真让我烦恼。

    我是reached outEric 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/

    相关文章:

    javascript - 如何检测 Firefox Mobile 中的触摸支持(Android、Fennec 7.0.1)

    css - 如果 CSS 选择器包含地址元素,Firefox 拒绝样式元素

    image - 使 Firefox 图像缩小类似于 Chrome 或 IE 中的结果

    html - 即使在添加 "display:table"和 "table-layout:fixed"之后,我也无法让 Firefox 尊重 "max-width"属性

    html - 带溢出的嵌套 flexbox 在 IE10+ 中不起作用

    internet-explorer - Internet Explorer 9 是 "evergreen"浏览器吗? IE 10 怎么样?

    html - Internet Explorer 10 菜单项意外显示焦点轮廓

    javascript - HTML5 - ApplicationCache 不更新(仅)某些文件

    php - AppCache list 错误

    ios - 为什么以前缓存在 iPad 上的 SVG 图像并不总是从应用程序缓存中加载?