0

我遇到了一个问题,无论预加载属性设置如何,当 IE9 请求视频并且视频由 x-sendfile 提供时,该请求被列为待处理并保持连接打开。

因此,如果您尝试加载 10 个视频,IE9 将很快耗尽所有可用连接,并且浏览器将无法发出进一步的请求。

当告诉 IE9 从 Apache 请求相同的视频时,没有 X-Sendfile,Apache 将文件的一小部分作为 200 请求提供。然后浏览器稍后在按下播放按钮以提供文件范围时发出请求。

看起来 X-Sendfile 导致 Apache 最初提供整个文件,而不是只提供其中的一部分。

如何通过 Apache 函数发出 X-Sendfile 请求与对 Apache 的常规请求相同?

4

1 回答 1

0

设置“Accept-Ranges”标头header("Accept-Ranges: bytes");告诉 IE9 默认尝试流式传输文件,而不是在一个块中提供它。

建议在设置之前检查 HTTP 请求是否为 1.1 版本,因为 1.0 不支持标头。

if (isset($_SERVER['SERVER_PROTOCOL']) && $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.1') {
    header("Accept-Ranges: bytes");
}

我无法在任何地方找到任何关于此的文档,所以我在这里发布我的解决方案。

于 2014-12-10T22:57:23.777 回答