Alojamos algunos archivos de video (mp4) en nuestro sitio.
Todos los archivos se cargan demasiado lento en Google Chrome, en FF todo está bien.
Probé la descarga de un archivo con un tamaño de 34 MB (abrí el archivo mediante un enlace directo). Los resultados son:
- Chrome realizó ~ 22000 (!) Solicitudes, 982 MB transferidos.
- Firefox realizó solo 5 solicitudes.
Como servidor, usamos nginx con la configuración predeterminada (relacionada con la publicación de archivos de video).
Aquí la interacción (las primeras cinco solicitudes) entre Chrome y el servidor. Sólo Range
, Content-Length
, Content-Range
encabezados incluidos.
(<- encabezado enviado por Chrome, <- uno enviado por el 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 Chrome malinterpreta algunos encabezados que se envían desde el servidor (por ejemplo, Range) y descarga las mismas piezas de archivo muchas veces.
¿Qué puede causar el problema? ¿Algunas ideas?
fuente