2009-11-20

flash.net.URLLoaderの同時接続数

一度に沢山のURLLoader(やLoader)を作って多数のデータを同時にロード開始しても大丈夫なのかなぁ、と疑問に思ったので試してみた。

  • サーバー上に5MBの適当なファイル(test.dat)を用意。
  • 16個のURLLoaderで("test.dat?date=" + (new Date()).getTime() + "&count=" + count++)というようなURLでキャッシュを回避してダウンロードするActionScriptを書く。それぞれのダウンロードの進捗状況を個別に画面に表示させる。
  • コンパイルしたswfをtest.datと同じ場所に置く。
  • ブラウザでそのswfを開いてダウンロードの状況を観察する。

結果。

  • Firefoxでは最大で6個同時にダウンロードした。これはabout:configのnetwork.http.max-persistent-connections-per-serverの数に一致し、値を4へ変更したら最大4個同時にダウンロードするようになった。
  • IE8(Vista)では最大10個同時にダウンロードした。これはレジストリのHKEY_CURRENT_USERのSoftwareMicrosoftWindowsCurrentVersionInternet SettingsMaxConnectionsPerServerの数に一致し、値を8へ変更(かつIEの再起動が必要だった)したら最大8個同時にダウンロードした。

URLLoaderを沢山インスタンス化して同時に沢山のloadメソッドを呼んでも、ブラウザの同時接続数設定に従って順次ダウンロードが行われるようだ。

ただ、この挙動に頼って良いものかどうかは未だ疑問。