【问题标题】:Firefox - can't refresh cached video fileFirefox - 无法刷新缓存的视频文件
【发布时间】:2016-12-02 03:43:45
【问题描述】:

已编辑以澄清潜在问题。

我正在尝试调试一个包含一个图像和一个视频的简单 HTML5 网页。一切显示正常。视频播放正确。但是,当我尝试刷新页面时,除了视频文件之外的所有内容都已下载。我正在使用 Firefox 开发人员工具,但我不明白发生了什么。

在网络选项卡上,我看到正在下载 .html 文件,然后是 image.jpg 文件。但我从来没有看到下载的video.mp4 文件。视频播放正常,但不是服务器上的当前版本。好像是以前的版本被缓存了。

我很困惑为什么会这样。开发人员工具中禁用了缓存。我正在用Ctrl+F5 刷新页面。就好像视频是从我不知道的某个秘密本地缓存中提供的。我正在使用 Firefox 47.0.1。当我使用 Firebug 进行测试时,也会发生同样的事情。

编辑。我现在已经在 Chrome 中尝试了开发者工具,它完全一样。第一次访问该页面时,我可以看到 video.mp4 正在下载。在随后的重新加载中,我可以正常看到 .html.jpg 文件,但 不是 video.mp4 文件。它必须被缓存在某个地方,因为它可以播放。我在 Chrome 开发工具中禁用了缓存。我明确清除了缓存并尝试了一个隐身窗口。除了第一次,我从未看到任何视频文件正在下载的迹象。

我一定遗漏了一些明显的东西。其他人可以重现这个吗?

这是我的 HTML。

<! DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
  <body>
    <p>Test page.</p>
    <img src="media/image.jpg">
    <video src="media/video.mp4" controls="">
      Display this if the browser can't play video.
    </video>
  </body>

从 cmets 转移的有关问题答案的信息:
1:
谢谢@nakji。清除缓存和私人浏览完全没有区别。但是关闭浏览器确实如此。清除缓存后我重新打开了浏览器。在我第一次访问该页面时,我可以看到 video.mp4 的两个 GET,响应为 206(部分内容)。但在那之后,它又回到了原来的问题。我将下载 Chrome 并尝试一下

2:
@ManoDestro。我尽一切可能强制重新下载video.mp4。但它没有发生。我用 Ctrl+F5 重新加载了页面。我在开发工具设置中关闭了缓存。我手动清除了缓存。我尝试了一个私人浏览窗口。我想不出别的了。就像视频是从不遵守正常缓存规则的秘密缓存中提供的一样。我使用了多种工具来确认该文件没有通过网络传输——FF 开发工具、Firebug 和现在的 Wireshark。有人可以用类似的设置进行测试吗?

【问题讨论】:

    标签: html firefox video firefox-developer-tools


    【解决方案1】:

    经过一整天的谷歌搜索,我现在可以回答我自己的问题了。事实证明,Firefox 有一个用于 HTML5 视频和音频内容的特殊“媒体缓存”,它与每个人都知道的常规缓存完全分开。它针对与媒体内容相关的高带宽和大文件进行了优化。其中一位开发者 Robert O'Callahan 解释了这一切 here

    愚蠢的是,这个媒体缓存似乎并没有像您期望的那样被清除。事实上,它似乎永远不会被清除。曾经。结果是,当您真的希望它再次从服务器获取媒体文件时,Firefox 会继续从缓存中提供陈旧的内容。这是我最初试图调试的问题。在我更改服务器上的文件后,Firefox 一直播放错误的视频。我无法下载新版本。

    您通常用来强制页面重新加载的所有操作都不适用于媒体缓存。以下没有效果。

    • 用户选择“清除最近的历史记录”并删除所有内容。
    • 用户在开发者工具中关闭缓存。
    • 用户使用 Ctrl+F5 强制重新加载整个页面。

    唯一有效的方法是关闭浏览器并重新启动。我仍然在这个复杂的区域中寻找出路。如果有人知道更多,请发表评论。

    我将此作为错误报告给 Firefox here

    【讨论】:

    • 根据链接页面的内容,有可能将media.cache_size更改为0,或者一个很小的值,在about:config。如果将其保持在该新值,或者将其设置为低一段时间或某些操作,然后返回到原始值,这可能会有效。除了从一个会话(set->restart FF->use->return to orig value->restart FF)之外,这样做将取决于何时检查该值以及是否在每个 FF 会话中多次检查该值。看来是时候RTFS了。
    • 似乎在 60.8.0esr 中倒退了:|
    猜你喜欢
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 2011-10-10
    • 2021-02-22
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多