Я столкнулся с проблемой, когда независимо от параметра атрибута предварительной загрузки, когда IE9 делает запрос на видео, а видео обслуживается файлом x-sendfile, запрос отображается как ожидающий и сохраняет соединение открытым.
Следовательно, если у вас есть 10 видеороликов, пытающихся загрузить, IE9 быстро съедает все доступные соединения, и браузер не сможет отправлять дальнейшие запросы.
Сообщая IE9 запрашивать одно и то же видео с Apache, без X-Sendfile, Apache обслуживает небольшую часть файла в виде запроса 200. Затем браузер делает запрос позже, когда нажата кнопка воспроизведения, чтобы обслуживать диапазон файла.
Похоже, что X-Sendfile заставляет Apache сначала обслуживать весь файл, а не обслуживать только часть его.
Как я могу сделать запросы X-Sendfile через Apache так же, как обычный запрос Apache?
Установка заголовка "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");
}
Я нигде не мог найти документацию, поэтому я размещаю свое решение здесь.
Range: bytes
.