Почему Firebug показывает ответ "206 частичного контента" по запросу на загрузку видео?

У меня есть куча видеоэлементов html5, причем их атрибут preload установлен на "auto". Они начинают загружаться очень хорошо, но я думаю, что может быть проблема с их кэшированием, потому что каждый раз, когда я перезагружаю страницу (без очистки кеша), они начинаются все заново.

Когда я проверил панель "Сеть" в firebug, я заметил, что все остальное (изображения и файлы) давало мне сообщение "304 не изменено", как ожидалось, в то время как файлы видео (и аудио) давали мне "частичный контент 206" ", в дублированных вводах.

Ответ частичного контента 206 также появляется в дублированных записях, когда страница загружается с очищенным кешем, вместо ответа "200 OK", как и ожидалось.

Это обычное поведение для видео и аудио элементов? Если нет, как это можно исправить?

Ответ 1

Этот код частичного контента (206) может быть отправлен с сервера, когда клиент запросил диапазон (например, "дайте мне первые 2 МБ видеоданных" ).

Это важно для загрузки данных в куски, что позволяет избежать извлечения неиспользуемых ресурсов. (Я редко просматриваю полное видео онлайн.) Посмотрите на исходящий запрос для заголовка Range.

Смотрите Коды состояния (RFC2616 - HTTP/1.1) (обратите внимание, что любой код 2xx означает "Успех" ):

10.2.7 206 Частичное содержание:

Сервер выполнил частичный запрос GET для ресурса. Запрос ДОЛЖЕН включать поле заголовка диапазона (раздел 14.35), указывающее желаемый диапазон, и МОЖЕТ включить поле заголовка If-Range (раздел 14.27), чтобы сделать запрос условным.

И из раздела Заголовок диапазона:

Если сервер поддерживает заголовок Range, и указанный диапазон или диапазоны подходят для объекта

  • Наличие заголовка Range в безусловном GET изменяет что возвращается, если GET в противном случае успешна. В других слова, ответ содержит код состояния 206 (Partial Контент) вместо 200 (ОК).

Я не понимаю сложности кэширования и/или ETags или что ожидать в FireFox, однако.

Ответ 2

В firefox на моей локальной машине разработки я не смог получить видео .webm для воспроизведения, если только сервер не был настроен на их использование. Firebug покажет 206, но ничего не покажет. Это можно решить, добавив

AddType video/webm .webm

к вашему .htaccess.

Ответ 3

Согласно https://httpstatuses.com/206

"Сервер НЕ ДОЛЖЕН генерировать многочастный ответ на запрос для одного диапазона, поскольку клиент, который не запрашивает несколько частей, может не поддерживать многочастные ответы. Однако сервер МОЖЕТ генерировать полезную нагрузку multipart/byteranges только с одним если несколько диапазонов были запрошены, и только один диапазон был признан выполнимым или только один диапазон оставался после объединения. Клиент, который не может обработать ответ multipart/byteranges, НЕ ДОЛЖЕН генерировать запрос, запрашивающий несколько диапазонов.

Когда создается многопользовательская полезная нагрузка, сервер ДОЛЖЕН отправлять части в том же порядке, что соответствующая спецификация байтового диапазона появилась в полученном поле заголовка диапазона, за исключением тех диапазонов, которые считались неудовлетворительными или которые были объединены в другие диапазоны. Клиент, который получает ответ multipart, ДОЛЖЕН проверять поле заголовка Content-Range, присутствующее в каждой части тела, чтобы определить, какой диапазон содержится в этой части тела; клиент не может полагаться на получение тех же диапазонов, которые он запросил, и на тот же порядок, который он запросил ".