2014-12-10 1 views
0

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

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

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

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

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

ответ

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. – hobbs

+0

@hobbs Хороший улов! Похоже, я пришел к правильному решению с неправильным выводом! Я исправлю свой ответ. –