Nginx
Chrome 在下載 MP4 影片 (~34MB) 時發出太多請求 (~22000)
我們在我們的網站上託管了一些影片文件 (mp4)。
所有文件在Google瀏覽器中的載入速度都太慢了,在 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)並多次下載相同的文件。
什麼可能導致問題?有任何想法嗎?
該問題是由影片文件(即使用的轉換器)引起的。
導致問題的文件已使用Format Factory v2.6進行了轉換。
升級到v3.7並重新轉換後問題消失了。
是什麼讓 Chrome 在播放此類影片時提出如此多的請求仍然未知……