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

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

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

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

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

3 ответов


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

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

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

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

сервер выполнил частичный GET-запрос к ресурсу. запрос должны включили поле заголовка диапазона (раздел 14.35), указывающее желаемый диапазон и, возможно, включили поле заголовка If-Range (раздел 14.27), чтобы сделать запрос условным.

и заголовка Range:

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

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

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


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

AddType video/webm .webm

в свой .реврайт.


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

"сервер не должен генерировать составной ответ на запрос для одного диапазона, так как клиент, который не запрашивает несколько частей, может не поддерживать составные ответы. Однако сервер может генерировать полезную нагрузку multipart/byteranges только с одной частью тела, если было запрошено несколько диапазонов и только один диапазон был найден удовлетворительным или только один диапазон остался после объединения. Клиент, который не может обработка ответа multipart / byteranges не должна генерировать запрос, который запрашивает несколько диапазонов.

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