Как я могу остановить X-Sendfile от предоставления полного видеофайла, когда IE9 делает запрос?

Я столкнулся с проблемой, когда независимо от настройки атрибута предварительной загрузки, когда IE9 отправляет запрос на видео, а видео обслуживается x-sendfile, запрос отображается как ожидающий и сохраняет соединение открытым.

Следовательно, если у вас есть 10 видео, которые пытаются загрузить, IE9 быстро сожрет все доступные соединения, и браузер не сможет делать дальнейшие запросы.

При указании IE9 запрашивать то же видео у Apache без X-Sendfile, Apache обрабатывает небольшую часть файла как запрос 200. Затем браузер делает запрос позже, когда кнопка воспроизведения нажата, чтобы обслуживать диапазон файла.

Похоже, X-Sendfile заставляет Apache изначально обслуживать весь файл, а не только его часть.

Как я могу сделать запросы X-Sendfile через функцию Apache так же, как и обычный запрос к Apache?

1 ответ

Установка заголовка "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");
}

Я нигде не смог найти никакой документации по этому вопросу, поэтому выкладываю свое решение здесь.

Другие вопросы по тегам