Chrome и Safari не кэшируют большое видео - PullRequest
6 голосов
/ 19 июня 2020

Я размещаю сайт, на котором размещается видео HTML. Видеоответ моего сервера включает заголовок cache-control: public, max-age=31536000, immutable. Все работает на Firefox, но на Chrome и Safari я не вижу ожидаемых результатов кеширования.

My JavaScript (Angular) ищет видео в случайном месте в случайное время интервалы. Есть две связанные, но разные проблемы, с которыми я сталкиваюсь:

  1. Chrome и Safari запрашивают диапазон видео каждый раз, когда ищет видео, даже если он уже запрошен. этот диапазон. Это означает, что если я оставлю браузер открытым, он никогда не перестанет делать запросы .
  2. Chrome и Safari не кэширует видео между загрузками страниц.

Я подозревал, что проблема заключается в размере видео (170 МБ), поэтому для тестирования я заменил его на видео меньшего размера (9 МБ). Для более короткого видео не возникает проблем, связанных с более длинным видео:

  1. Если видео не кэшировано. Chrome и Safari делают только один запрос. Они не делают новые запросы для каждого поиска.
  2. После первого запроса Chrome и Safari кэшируют видео для новых видео-запросов.

Заголовки запроса / ответа - это то же самое для двух видео, и все ответы имеют статус 206. Единственное существенное различие, которое я могу найти, заключается в том, что для меньшего видео обычно требуется только один запрос для загрузки, тогда как для большего видео требуется несколько запросов.

Почему я не могу кэшировать большее видео? Как мне это обойти?

1 Ответ

1 голос
/ 01 июля 2020

Как вы упомянули, вы отправляете код состояния 206 для частичного содержимого вместе с age header, но это еще не все.

Подход 1

Вы должны отправить заголовки Content-Range, которые могут обозначать диапазон контента, который загружается для носителя, чтобы помочь браузеру. Кроме того, существует ограничение кеширования браузера, которое автоматически удаляет старый / устаревший контент при появлении fre sh контента. Вы можете внимательно прочитать здесь ,

Подход 2

Кроме того, если стратегия заголовка не работает, вы всегда можете попробовать service-worker кэширование и создание собственной корзины и стратегии кеширования для определенного c медиаконтента, вы можете прочитать об этом здесь .

Я надеюсь, что при тестировании кеширования вы не «Отключение кеша» в Dev-tools, а также проверяйте правильность заголовков запросов и ответов из журналов сервера вместо браузера для проверки кеширования.

Надеюсь, что это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...