Hospedamos alguns arquivos de vídeo (mp4) em nosso site.
Todos os arquivos são carregados muito lentamente no Google Chrome, no FF está tudo bem.
Testei o download de um arquivo com tamanho de 34 MB (abri o arquivo por um link direto). Os resultados são:
- O Chrome fez ~ 22000 (!) Pedidos, 982 MB transferidos.
- O Firefox fez apenas 5 pedidos.
Como servidor, usamos o nginx com configurações padrão (relacionadas à exibição de arquivos de vídeo).
Aqui, a interação (as cinco primeiras solicitações) entre o Chrome e o servidor. Apenas Range
, Content-Length
, Content-Range
cabeçalhos incluídos.
(<- cabeçalho enviado pelo Chrome, <- um enviado pelo servidor):
> 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
Parece que o Chrome entende mal alguns cabeçalhos enviados do servidor (por exemplo, Range) e baixa os mesmos arquivos várias vezes.
O que pode causar o problema? Alguma ideia?
fonte