2011-12-20 5 views
1

私のプロジェクトでは、各ページに依存するJavascriptとCssの束があります。開発中に私はちょうどページにこのコードをダンプしましたが、今私はそれをきれいにするために探しています...Css/Jsの分派化 - 正しい方法ですか?

それは一般的なアプローチは、アプリケーションのすべてのJavascript/CSSを2つの大きな最小化されるファイル

このアプローチでは、すべてのフロントエンドコードがサーバーから一度だけ取り込まれるため、帯域幅が減少するという利点があります。ただし、アプリケーションのメモリフットプリントを増やすことになります。私が実際に必要としない各ページのための機能の全体のトン - それはなぜ私はそれらをページ単位で始めていたのですか。

は、他の誰かが気にしていることですか、この問題を管理する方法はありますか?

はい、私は条件付き関数の作成を行うと思っていました。なぜなら、私の見解では少しハッキリしていますが、各ページに条件付きでコードを実行する必要があるからです。

また、一度も使用されていないCss全体を定義するには、多くの費用がかかりますか?

答えて

1

アプリケーションで1つの大きなヒットでjavascript/CSSを使用すると、ブラウザはすべてのページに必要なすべてをキャッシュすることができます。サイトの標準的なユースケースでは、ユーザーが一定の間滞在してナビゲートすることが望ましい場合は、これを使用することをお勧めします。

ただし、リンク先ページをすばやく読み込みたい場合は、ユーザーが移動する可能性があるため、このページに必要なCSS/javascriptのみを提供することを検討してください。

大きなCSSファイルのパフォーマンスオーバーヘッドの点では、目立つものはありません。最新のブラウザーはすべて、スタイルを適用するために高度に最適化されています。

javascriptに関しては、条件付き関数の作成を使用しないことをお勧めします。条件付き名前空間の作成は容認でき、必須ですが、関数は1か所だけで宣言する必要があります。

+0

あなたは良い点を作っています。私のプロジェクトはWebアプリケーションですが、私は公開側を持っています...つまり、あなたが参照するユースケースはどちらもあります。だから、使用されていないメモリに大量の関数をロードする場合のペナルティは、おそらく無視できると考えられているかもしれません。私はちょうど簡単なルートに行き、すべてを束ねます... – ekkis

1

帯域幅の最大のことは、サーバーが出力を圧縮していることを確認することです。静的なドキュメントタイプは圧縮する必要があります(html、js、cssなど)。

たとえば、jQueryコアは約からです。サーバがブラウザに送る圧縮された出力のためだけに90KBから30KB。

圧縮を考慮すると、実際にには、JSファイルを分割するためにが必要です。

ドキュメンテーションを非圧縮バージョンに入れることができるため、マイニングプロセスによって本番環境のコメントがすべて削除されるため、私のコードを小さくして難読化するのが本当に好きです。

+0

あなたの返信に感謝 - 私HTTP圧縮を認識しています。私の本当の心配はメモリフットプリントです – ekkis

+0

@ekkisモバイルデバイス(Android、iOS、Blackberry)でも1MBのファイルをキャッシュできます。あなたが100KB未満のコード(圧縮前)について話しているなら、私は心配しません。とにかく各ページを表示すると、ユーザーはすべてをダウンロードします。単一のインクルードを使用すると、後続の各ページがより高速に読み込まれます。 – Jasper

0

1つの方法は、すべての共有JavaScriptを1つのファイルに圧縮して圧縮し、各ページに配信することです。その後、ページ固有のjavascriptは、(私は非常に共通のページのjavascriptをメインのjavascriptファイルに入れることを検討しますが)独自のファイルに圧縮/縮小することができます。

私は常に各ページのファイルを分割するのではなく、すべてのCSSを1つのファイルに圧縮/縮小する習慣を持っていました。これは、ページ固有のファイルの一部が非常に小さくなる可能性があり、理想的にはサイト全体でできるだけ多くのCSSを共有するためです。

ジャスパーのように、あなたのサーバーが静的リソース(javascriptやcssなど)をGZIPingしていることを確認することが最も重要です。

+0

はい... の共有コードを持っていて、そのページによって読み込まれた各ページに固有のすべてが私が今やっていることです...私が議論していることは、すべてを大きなファイルに投げるかどうかですメモリ使用率の増加に関しては、そのページで使用できないオブジェクト(関数など)を1トン定義すればわかります。メモリの制約が一般的に問題ではないという答えが得られれば、すべてを単一のファイルに投げ込む方が簡単です... methinks – ekkis

0

JavaScriptコードがたくさんある場合は、jsファイルの非同期読み込みを見ることができます。

ExtJsやQooxdooのような大きなプロジェクトの中には、必要なコードのみを読み込むためのローダーが組み込まれていますが、これを単純化するライブラリがたくさんあります(例えばhead.js、LAB.jsなど)。

大きなアプリの場合はブラウザに重いものになる可能性があるJavaScriptコード全体ではなく、必要なファイルだけを読み込むアプリケーションを作成することができます。