一度に沢山の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メソッドを呼んでも、ブラウザの同時接続数設定に従って順次ダウンロードが行われるようだ。
ただ、この挙動に頼って良いものかどうかは未だ疑問。