Мы размещаем некоторые видео файлы (mp4) на нашем сайте.
Все файлы загружаются слишком медленно в Google Chrome, в FF все в порядке.
Я протестировал загрузку файла размером 34 МБ (я открыл файл по прямой ссылке). Результаты:
- Chrome сделал ~ 22000 (!) Запросов , 982MB передано.
- Firefox сделал всего 5 запросов.
В качестве сервера мы используем nginx с настройками по умолчанию (относящимися к обслуживанию видеофайлов).
Здесь взаимодействие (первые пять запросов) между Chrome и сервером. Только Range
, Content-Length
, Content-Range
заголовки включены.
(<- заголовок, отправленный Chrome, <- заголовок, отправленный сервером):
> Initial request for file, usual GET
< Content-Length:35690389
< Content-Type:video/mp4
Then a bunch of similar requests, on which the server responded with 206 status code:
---
> Range:bytes=0-
< Content-Length:35690389
< Content-Range:bytes 0-35690388/35690389
---
> Range:bytes=29100305-
< Content-Length:6590084
< Content-Range:bytes 29100305-35690388/35690389
---
> Range:bytes=35566374-
< Content-Length:124015
< Content-Range:bytes 35566374-35690388/35690389
---
> Range:bytes=32-
< Content-Length:35690357
< Content-Range:bytes 32-35690388/35690389
Похоже, что Chrome неправильно понимает некоторые заголовки, которые отправляются с сервера (например, Range) и загружает одни и те же фрагменты файла много раз.
Что может вызвать проблему? Любые идеи?
источник