グローバルスケールのWebアプリケーションの経験が豊富な人が、私が持っているいくつかの質問、仮定、および考えられる誤解を明らかにしてくれることを願っています。
世界中に数十万人のユーザーがいて、ソースが1つの場所(たとえば中央ヨーロッパ)から提供されている架空のサイト(大量のクライアント側/動的コンポーネント)を考えてみましょう。
- アプリケーションが一般的なJavaScriptライブラリに依存している場合は、Google CDNから取得して、1つの縮小されたJSファイルに(すべてのアプリケーション固有のJavaScriptとともに)コンパイルするか、Google CDNとは別にロードする方がよいでしょうか?
- Assetic VS headjs:1つのJSファイルをロードするか、すべてのスクリプトを並列にロードする(依存関係の順に実行する)方が理にかなっていますか?
私の仮定(私を訂正してください):
人気のあるライブラリ用のGoogleなどのCDNを使用して、すべてのアプリケーション固有/ローカルJSコードを1つのファイルにコンパイルしますが、headjsを介してこれらすべてを並行してロードするのが最適のようですが、よくわかりません。サードパーティのJSとアプリケーション固有のJSを1つのファイルにサーバー側でコンパイルすると、ライブラリはおそらくユーザーのラインのどこかにキャッシュされるため、CDNを使用する目的はほとんど無効になります。
キャッシュに加えて、とにかくアプリケーションをホストしている中央サーバーよりも、GoogleのCDNからサードパーティのライブラリをダウンロードする方がおそらく速いでしょう。
人気のあるJSライブラリの新しいバージョンがリリースされ、パフォーマンスが大幅に向上した場合は、アプリケーションでテストしてから実装します。
- すべてのJSが1つのファイルにコンパイルされている場合、アプリケーションコードが変更されていなくても、すべてのユーザーがこのファイルを再ダウンロードする必要があります。
- サードパーティのスクリプトがCDNからロードされる場合、ユーザーはCDNから(またはどこかのキャッシュから)新しいバージョンをダウンロードするだけです。
説明されているような状況で、次の正当な心配のいずれかがありますか?
- 一部のユーザー(またはブラウザー)は、一度に1つのホスト名に特定の数の接続しか持てないため、サードパーティのCDNから一部のスクリプトを取得すると、読み込み時間が全体的に速くなります。
- 一部のユーザーは制限された環境でアプリケーションを使用している可能性があるため、アプリケーションのドメインはホワイトリストに登録されている可能性がありますが、CDNのドメインはリストされていません。(これが現実的な懸念である可能性がある場合、CDNからロードし、障害時に中央サーバーからロードしようとすることは可能ですか?)