3

バンドルが MVC4 に登録されている場合、受信httpリクエストを「傍受」する役割は何/bundles/someBundle?v=1hDzBpmYJm4Iu-OjRN1YqS1WeNThVl0kStLJGP8WCr41ですか? また、各バンドルのハッシュは(最初のリクエストで)1回だけ計算されるため、実際に保持されている場所はどこですか - そして404、入ってくるハッシュが一致しない場合に返すことは可能ですか

4

3 に答える 3

1

~/bundles/someBundle の受信 http リクエストを「傍受」する責任があるのは何ですか?

への着信要求はありません~/bundles/someBundleScripts.Renderサーバー上で (同じ HTTP 要求内で)使用しているのはサーバー側のヘルパーであり、この値を解釈し、結果の HTML に正しい URL を吐き出します。

また、各バンドルのハッシュは (最初のリクエストで) 1 回だけ計算されるため、実際に保持されている場所はどこですか?

実際のバンドルの内容は、サーバー側のキャッシュに保存されます: HttpContext.Cache. Scripts.Render実際のハッシュは、ヘルパーを使用するたびに計算されるこのコンテンツの SHA256 ハッシュを表します。


アップデート:

これSystem.Web.Optimization.BundleModuleは、System.Web.Optimization アセンブリを参照するときに自動登録されるもので、URL などへの要求をインターセプトし/bundles/someBundle?v=1hDzBpmYJm4Iu-OjRN1YqS1WeNThVl0kStLJGP8WCr41て実際のコンテンツを返す役割を果たします。

于 2013-10-01T11:44:33.330 に答える
0

提供している実際のファイルの内容に基づいてパラメーターを使用してクエリ文字列を追加する理由は、キャッシュの問題を解決するためです。したがって、ブラウザにこのリクエストを長期間キャッシュして、後続のページの読み込み時間を短縮するように通知できます。
したがって、このバンドル メカニズムの開発者にとって、そのパラメータが何であるかに違いはありません。唯一重要なことは、スクリプトまたは css の内容を変更すると、ハッシュが変更され、クライアントのブラウザーがサーバーから新しいファイルを要求するように強制されることです。
このリクエストをインターセプトする責任があるものについては、MVC のソース コードが codeplex で入手できますが、ルーティングに正しく接続されていると思います。

于 2013-10-01T13:06:39.980 に答える
0

Web プロジェクトのフォルダー App_Start に BundleConfig.cs というファイルが必要です。

そのセクションは基本的に、URL「/bundles/something」をいくつかのスクリプトにリンクしています。リリース モード (デバッグがアクティブ化されていない) でサイトにアクセスすると、スクリプトが自動的に 1 つのメモリ内ファイルにマージされ、スクリプトが最小化され、キャッシュ ヘッダーが要求に追加され、ファイル コンテンツのハッシュが生成されます。

デバッグ中の場合は、デバッグを容易にするためにすべてのスクリプトを分離する必要があります。

そのファイルに表示されるバンドルを再定義するか、独自のものを宣言します。

楽しみ。

于 2013-10-01T12:27:16.830 に答える