Firefox - 无法刷新缓存的视频文件

ten*_*bob 4 html video firefox firefox-developer-tools

编辑以澄清根本问题。

我正在尝试调试一个包含一张图像和一个视频的简单 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>
Run Code Online (Sandbox Code Playgroud)

信息来自对问题答案的评论:
1:
谢谢@nakji。清除缓存和隐私浏览没有任何区别。但是关闭浏览器就可以了。我清除缓存后重新打开浏览器。在我第一次访问该页面时,我可以看到两个 GETvideo.mp4响应 206(部分内容)。但之后又回到了原来的问题。我将下载 Chrome 并尝试一下

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

ten*_*bob 6

经过一整天的谷歌搜索后,我现在可以回答我自己的问题了。事实证明,Firefox 对于 HTML5 视频和音频内容有一个特殊的“媒体缓存”,它与大家都知道的常规缓存完全分开。它针对与媒体内容相关的高带宽和大文件进行了优化。开发人员之一罗伯特·奥卡拉汉 (Robert O'Callahan)在这里解释了这一切。

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

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

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

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

我在此处将此作为错误报告给 Firefox 。