Nginx

Chrome 在下載 MP4 影片 (~34MB) 時發出太多請求 (~22000)

  • December 4, 2015

我們在我們的網站上託管了一些影片文件 (mp4)。

所有文件在Google瀏覽器中的載入速度都太慢了,在 FF 中一切正常。

我測試了一個大小為 34MB 的文件的下載(我通過直接連結打開了文件)。結果是:

  • Chrome發出了約 22000(!)個請求,傳輸了982MB
  • Firefox只發出了 5 個請求。

作為伺服器,我們使用具有預設(與影片文件服務相關)設置 的nginx 。

這裡是 Chrome 和伺服器之間的互動(前五個請求)。僅包含Range, Content-Length,Content-Range標頭。

(< - Chrome 發送的標頭,< - 伺服器發送的一個):

> Initial request for file, usual GET  
&lt; Content-Length:35690389  
&lt; Content-Type:video/mp4  

Then a bunch of similar requests, on which the server responded with 206 status code:  
---  
> Range:bytes=0-  
&lt; Content-Length:35690389  
&lt; Content-Range:bytes 0-35690388/35690389  
---   
> Range:bytes=29100305-  
&lt; Content-Length:6590084  
&lt; Content-Range:bytes 29100305-35690388/35690389  
---  
> Range:bytes=35566374-   
&lt; Content-Length:124015  
&lt; Content-Range:bytes 35566374-35690388/35690389  
---  
> Range:bytes=32-  
&lt; Content-Length:35690357  
&lt; Content-Range:bytes 32-35690388/35690389  

看起來 Chrome 誤解了一些從伺服器發送的標頭(例如 Range)並多次下載相同的文件。

什麼可能導致問題?有任何想法嗎?

該問題是由影片文件(即使用的轉換器)引起的。

導致問題的文件已使用Format Factory v2.6進行了轉換。

升級到v3.7並重新轉換後問題消失了。

是什麼讓 Chrome 在播放此類影片時提出如此多的請求仍然未知……

引用自:https://serverfault.com/questions/738881