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

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

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

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

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

3 ответа

Решение

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

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

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

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

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

И из раздела заголовка Range:

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

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

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

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

AddType video/webm .webm

на ваш.htaccess.

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

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

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

Другие вопросы по тегам