私たちのサイトではいくつかのビデオファイル(mp4)をホストしています。
Google Chromeではすべてのファイルの読み込みが非常に遅いため、FFではすべて問題ありません。
サイズが34MBのファイルのダウンロードをテストしました(直接リンクでファイルを開きました)。結果は次のとおりです。
- Chromeは〜22000 (!)のリクエストを行い、982MBが転送されました。
- Firefoxは5つのリクエストしか行いませんでした。
サーバーとして、デフォルトの(ビデオファイルの配信に関連する)設定でnginxを使用します。
ここでは、インタラクション(最初の5つのリクエスト)が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)を誤解し、同じファイルを何度もダウンロードするようです。
問題の原因は何ですか?何か案は?