2011-08-03 6 views
4

シナリオ:できるだけページを更新したくない大規模なjavascript駆動型Webアプリケーションを構築しています。 "large"を定義するための番号を持つために、80-100MBの非ジャバスクリプトを想像してみてください。シングル.jsファイルとレイジーローディング

私は、JavaScriptファイルを怠惰に読み込むと、読み込み時間のバランスが改善されるということです(つまり、ページが更新されるたびに数秒待つ必要はありません)。ユーザーは読み込み中に遅れに気づいていません。私は、このようなシナリオでは、通常の単一化された.jsファイルよりも遅延ロードがより望ましいと推測しています。

理論的には、ファイルのサイズにかかわらず、特定のサーバー上の任意のファイルに対する要求の固定コストがあります。したがって、あまりにも多くのリクエストは望ましくないでしょう。たとえば、小さいjavascriptファイルが他の10個の中小サイズのファイルと同時に読み込まれた場合、複数の要求のコストを節約するためにそれらをグループ化する方がよい場合があります。

私の質問は、合理的なデフォルトを仮定すると(クライアントは3-5Mbpsの接続と適切なハードウェアを持っています)、要求するファイルの理想的なサイズは何ですか?大きすぎます。一度に読み込みに戻ってしまいました。小さすぎると、リクエストのコストは、戻ってくるデータの量よりも高価になり、データの秒当たりの経済性が低下します。

:すべての回答が素晴らしいです。彼は特定の番号を与えたので私はベンを選んだだけです。

+0

大きな質問!私は自分の実際の数字に興味があります。

+0

Nitpick:「mb」はミリビットを表し、「Mb」はメガビットを表し、「MB」はメガバイトを表します。実際にはそれぞれ80-100MBと3-5Mbpsを想定していますか? – BalusC

+0

@BalusC清算してくれてありがとう!それは今正しく読む必要があります:) – benekastah

答えて

2

私もちょうど場合(ページを表示するためにロードする必要がある量を維持しようとしますローディングインジケータ)を300K以下で使用します。その後、ロードインジケーター(進捗バーなど)が表示された状態で、一度に最大5MBのチャンクで追加データをプルダウンします。私はそれ以外の場合はOKと思われた喫茶店のブロードバンドで15MBのダウンロードを失敗しました。 < 5MBのダウンロードに失敗した場合、私はおそらく作業していないためにウェブサイトを責めませんでした。

また、最初に< 300Kファイルを超えて、LabJSHeadJSのようなローダーを使用して、スクリプトタグをプログラムで追加することも検討します。

+0

+1良いライブラリに言及しています。私は[RequireJS](http://requirejs.org/)を調べてきました。だから、すべてのダウンロードが同じサイズであれば、≈5MBは理想的なサイズですか、それとも最大ですか? – benekastah

+0

最初の5MBがロードされた後は理想的なサイズになります。私は、最初の5MBをいくつかのチャンクに分けるかもしれません。例えば、200K後に見ることができ、2MB後に編集し、100MB後にオフラインで検索すると、最初に200Kをロードし、1.8KBをロードし、残りの98MBを5MBのチャンクでプルダウンします。 –

+0

また、Jethro LarsonのKyle Simpsonのredditコメントへのリンクを見た後、私は先に示唆した2つのファイルをまとめておきます。私は各段階を2つの要求に分割しました。私の数字は推測されますが、私はあなたがそのアイデアを得ることを願っています。また、要求ごとのHTTP負荷が低いことを認識すると、1つの5MB要求ではなく、2.5Mバイトの要求を2回実行します。 –

2

私は何かをする前にクライアントのダウンロードをjs以上のMBにするのは悪いことは明らかです。また、必要以上にクライアントのダウンロードを増やすことも悪いことです。しかし、すべてがキャッシュされていることには明確な利点があります。数字に影響を与えるであろう

要因:

  1. のラウンドトリップ時間
  2. ヘッダサイズ(Cookieを含む)サーバーの応答時間
  3. のキャッシング技術
  4. ブラウザ
  5. http://browserscope.comを参照してください)

バランシング・パーダウンロードやキャッシュのさまざまな要件も考慮する必要があります。 これは最近、Kyle Simpsonによって最近部分的にカバーされました:http://www.reddit.com/r/javascript/comments/j7ng4/do_you_use_script_loaders/c29wza8

+0

キャッシュテクニックについて言及します。ブラウザのキャッシュ方法を意味していますか? – benekastah

+0

http://www.browserscope.org/です。ここでネットワークのセクションhttp://www.browserscope.org/?category=networkもあります。また、私はBrowserScopeの動作を正確にはわかりませんでしたが、今はもっと良いアイデアがあります。便利なサイト。他のブラウザで自分のサイトをテストするにはhttp://saucelabs.com/をおすすめします。 –

+0

@benekastahあなたがそれに影響を与えるためにできることにもっと。 etags、expires、localStorageによる手動キャッシュ、アプリケーションキャッシュ、変更の多いファイルとほとんど変わらないファイルのグループ化方法。 –

関連する問題