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

0

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

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

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

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

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

Теги:
x-sendfile

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");
}

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

  • 1
    установка заголовка Accept-Ranges не заставляет X-Sendfile вообще что-либо делать. Он сообщает клиенту, что вы поддерживаете запросы Range: bytes .
  • 0
    @hobbs Хороший улов! Похоже, я пришел к правильному решению с неправильным выводом! Я исправлю свой ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню