我们在我们的网站上托管了一些视频文件(mp4)。
在谷歌浏览器中,所有文件的加载速度都太慢,在FF中一切正常。
我测试了下载大小为34MB的文件(我通过直接链接打开了文件)。结果是:
- 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),并多次下载了相同的文件。
可能导致问题的原因是什么?有任何想法吗?