当IE9发出请求时,如何阻止X-Sendfile提供完整的视频文件?

时间:2014-12-10 22:57:24

标签: php apache x-sendfile

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

因此,如果您有10个视频尝试加载,IE9将很快耗尽其所有可用连接,浏览器将无法再提出请求。

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

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

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

1 个答案:

答案 0 :(得分:0)

设置"接受范围"像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");
}

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