为什么Firebug会在视频加载请求中显示"206 Partial Content"响应?

CCr*_*ler 17 firebug server-response http http-status-codes html5-video

我有一堆html5视频元素,其preload属性设置为"auto".他们开始加载很好,但我认为他们的缓存可能有问题,因为每次我重新加载页面(没有清除缓存),他们重新开始.

当我在firebug中检查网络面板时,我注意到其他所有内容(图像和文件)都给了我一条"304未修改"的消息,而视频(和音频)文件给了我一个"206部分内容"消息,在重复的条目中.

当页面加载清除缓存时,"206部分内容"响应也出现在重复条目中,而不是像预期的那样"200 OK"响应.

这是视频和音频元素的正常行为吗?如果没有,怎么能纠正?

小智 17

这部分内容代码(206)可以从服务器发送当客户端已要求范围(如"给我的视频数据的第一2MB").

以块的形式下载数据是至关重要的,这样可以避免获取未使用的资源.(我很少在线观看完整的视频.)查看Range标题的传出请求.

请参阅状态代码(RFC2616 - HTTP/1.1)(请注意,任何 2xx代码均表示"成功"):

10.2.7 206部分内容:

服务器已完成对资源的部分GET请求.请求必须包含一个Range头字段(第14.35节),表示所需的范围,并且可以包含一个If-Range头字段(第14.27节)以使请求成为条件.

并从Range标题部分:

如果服务器支持Range标头,并且指定的一个或多个范围适用于该实体

  • 如果GET成功,则无条件GET中存在Range标头会修改返回的内容.换句话说,响应携带状态代码206(部分内容)而不是200(OK).

但是,我不了解缓存和/或ETag的复杂性或FireFox中的预期.