web-dev-qa-db-ja.com

Require.jsの最適化とasp.netmvc4のバンドルとミニファイ

最近、Mvc 4に、複数のスクリプトとcssを1つのリンクにバンドルして縮小する機能が含まれていることを確認しました。これにより、単一の構成でスクリプトの読み込み時間が短縮されます。

Require.js r.jsは、スクリプトの読み込みと縮小に使用できる最適化ツールでもあります。誰かがどちらが良いか教えてもらえますか?または、require.jsをミニファイ+バンドルツールと同じように使用して、スクリプトを単一のファイルにロードできるかどうか。 Mvc 4と同じように?

私はAMDの読み込みにrequire.jsを使用することを好むので、スクリプトの単一URL読み込みとしてrequire.jsで利用できる場合は、Mvc 4の縮小のアイデアの概念を適用し、最適化と縮小のためのcssを適用することを考えています。

誰かがこのトピックにいくつかのアイデアや光を当てることができますか?

30
Joy

Require.jsはクライアント側のツールであり、クライアントが必要なスクリプトのみを要求できるようにします。多くの場合、MVCアプリでは、すべてのスクリプトが_layout.cshtmlファイルに追加されることになり、各コントローラーが必要とするものについてはあまり考慮されていません。 Require.jsを使用すると、各モジュールを実行するために何が必要かを考えることができます。

r.jsにはノードまたはJavaが必要であり、MVC4のバンドルとミニファイにいくぶん類似したサーバー側のツールです。 r.jsは、requireと連携して機能し、一般的に使用されるバンドルを縮小して、パッケージとして送信します。しかし、それらをバンドルしてパッケージ化することにより、スクリプトがそれらを「要求」する前に、潜在的にそれらを送信します。

興味深いのは、バンドルすることで、AMDの目的をほぼ打ち負かしているということです。つまり、require.jsに必要なスクリプトを分類させ、必要なときに必要な場合にリクエストを送信させるのではなく、多数の依存スクリプトを1つのファイルにバンドルします。

Requireとmvcの統合に関する優れたリファレンス: http://www.stefanprodan.eu/2012/09/intro-requirejs-for-asp-net-mvc/ -使用していないことに注意してくださいバンドル。

だから私にとっては-個々のファイルを縮小し(そしてcssをバンドル/縮小し)、AMDをサポートするために必要に応じてその作業を要求するようにすると思います。

21
Pete

私の特定のケース(および以前に会った他の多くのケース)では、1〜3kbのスクリプトまたはスタイルファイルをロードするためだけに、個別のリクエストで追加のサーバーロードを実行する意味はあまりありません。

  • 前述のように、このようなリクエストは通常​​制限されているサーバーリソースを使用します
  • ロードには時間がかかり、50〜200msの遅延が保証されます
  • ファイルが多いほど、接続の問題が原因でファイルの1つがロードに失敗する可能性が高くなります。
  • すべてをモジュールにラップするために必要なボイラープレートコードの量を伴うオーバーヘッドもあります

巨大な5MB(非現実的)のバンドルスクリプトを一度ロードして、後でキャッシュからロードする方がはるかに効率的で安全に見えます。 GZipを使用すると、5mbのテキストを200kbのバイナリデータに圧縮できます。これは、平均的なサイトがリクエストごとに使用するグラフィックコンテンツの量よりもはるかに少ない量です。

9
Lu4