【发布时间】:2013-05-16 13:56:45
【问题描述】:
Web 服务器能够将媒体(本例中为音频)流式传输到浏览器。浏览器使用 HTML5 控件来播放媒体。然而,我发现 Firefox 正在缓存媒体,即使我(相信我)明确告诉它不要这样做。我有一种预感,它与 206 Partial Content 响应有关,因为带有完整 200 OK 响应的常规“非范围”GET 不会被缓存。 Chrome (27) 可以处理这个问题,但 Firefox (21) 不能:
HTTP/1.1 206 Partial Content
Date: Tue, 21 May 2013 17:24:29 GMT
Expires: 0
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Disposition: attachment; filename="audio.wav"
Content-Type: audio/x-wav
Connection: close
Accept-Ranges: bytes
Content-Range: bytes 0-218923/218924
有人知道如何让 Firefox 不缓存这个吗?当我点击播放其他名称相同的音频文件时,Firefox 只会播放会话中单击(缓存)的第一个音频文件,而不是从服务器重新获取新的音频文件。
请注意,this question 似乎直接询问/回答这个问题,但它不起作用......我使用提到的标题。
感谢您的帮助。
编辑:我也尝试添加一个 ETag: 标头,但 Firefox 仍然缓存原始响应。
编辑:包含要匹配的 Content-Length: 标头(本例中为 218924)似乎不会影响问题。
编辑:我在 bugzilla.mozilla.org 上提交了一个错误,但目前没有任何活动。
【问题讨论】:
-
你能用
Cache-Control: no-store, no-cache, must-revalidate试试吗,不用后检查和预检查。 -
试过了,没有变化...仍然缓存没有后/预检查组件
-
我相信你能想出一些办法来解决它......
标签: html http http-headers html5-audio http-caching