首页 > 解决方案 > 如何强制增加 Apache 中视频的范围字节响应的大小?

问题描述

最新版本的 Safari(移动和桌面)缓冲视频比其他浏览器慢 4 倍,因为它发送许多小型范围字节请求,而不是一些大型请求。下面是一个示例请求和响应(此请求以 64kb 的小尺寸继续,直到加载足够的数据以播放视频,在 Chrome、Firefox 和其他浏览器中,范围字节请求要大得多,因此数据传递得更多在一个流中更快)。

是否可以通过强制我的网络服务器 (apache) 忽略 Safari 的 64kb 小范围字节请求来解决这个问题,而是发送大量数据(大约 5MB)?请求直接针对视频文件。

Summary
URL: http://example.org/video.mp4?rand=942824
Status: 206 Partial Content
Source: Network

Request
GET /video.mp4 HTTP/1.1
Accept: */*
Connection: keep-alive
Range: bytes=0-65535
Accept-Encoding: identity

Response
HTTP/1.1 206 Partial Content
Content-Type: video/mp4
Content-Range: bytes 0-65535/467342440
Accept-Ranges: 0-467342440
Content-Length: 65536
Connection: keep-alive
Server: nginx/1.2.1

更新:我设法使用下面的代码更改了请求范围标头,但是即使快速下载了 5mb,safari 也会继续发送这些小的 64kb 范围请求并忽略下载的 5mb,因此这不是解决方案。

SetEnvIf Range bytes=0-65535 HAVE_MyRequestHeader
RequestHeader unset Range env=HAVE_MyRequestHeader
RequestHeader set Range bytes=0-5000000 env=HAVE_MyRequestHeader

标签: apachehttpbrowsersafarivideo-streaming

解决方案


不,您不能在服务器端更改它。客户端发出请求,服务器完成请求。发送客户未要求的数据可能会导致错误。


推荐阅读