Почему Firebug отображает ответ «206 Partial Content» на запрос загрузки видео? - PullRequest
17 голосов
/ 18 марта 2012

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

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

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

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

Ответы [ 3 ]

16 голосов
/ 18 марта 2012

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

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

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

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

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

А из заголовка диапазона :

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

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

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

1 голос
/ 08 октября 2013

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

AddType video/webm .webm

к вашему .htaccess.

0 голосов
/ 01 июня 2017

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

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

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

...