我遇到了一个问题,无论preload属性设置如何,当IE9发出视频请求,并且视频由x-sendfile提供服务时,请求被列为待处理状态并保持连接打开。
因此,如果您有10个视频尝试加载,IE9将很快耗尽其所有可用连接,浏览器将无法再提出请求。
当告诉IE9从Apache请求相同的视频而没有X-Sendfile时,Apache将该文件的一小部分作为200请求提供。然后,当按下播放按钮以提供文件范围时,浏览器会稍后发出请求。
看起来X-Sendfile最初导致Apache为整个文件提供服务,而不仅仅是服务于其中的一部分。
如何通过Apache函数发送X-Sendfile请求与对Apache的常规请求相同?
答案 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");
}
我无法在任何地方找到相关文档,所以我在这里发布我的解决方案。