30

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

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

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

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

4

2 に答える 2

21

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をサポートするために必要に応じてその作業を要求すると思います。

于 2012-11-02T01:03:23.740 に答える
9

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

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

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

于 2013-10-26T23:37:44.360 に答える