Я столкнулся с проблемой, когда независимо от установки атрибута предварительной загрузки, когда 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");
}
Я нигде не смог найти никакой документации по этому вопросу, поэтому выкладываю свое решение здесь.
Других решений пока нет …