asp.netのバンドルがどのように機能するのか知りたいです。
ブラウザがすべてのリソースに対して単一のリクエストを開始するように、すべてのスクリプトとcssおよびイメージをバンドルに追加する必要があることを私は知っています。
ページがクライアントブラウザからこれらのバンドルされたリソースをどのように参照するかについて、私は少し混乱しています。
asp.netのバンドルがどのように機能するのか知りたいです。
ブラウザがすべてのリソースに対して単一のリクエストを開始するように、すべてのスクリプトとcssおよびイメージをバンドルに追加する必要があることを私は知っています。
ページがクライアントブラウザからこれらのバンドルされたリソースをどのように参照するかについて、私は少し混乱しています。
System.Web.Optimizationでバンドルを使用するとどうなるかを見てみましょう。
この例では、「空のASP.NET MVC 4テンプレート」を使用し、nugetから最新の「Microsoft.AspNet.Web.Optimization」パッケージを取得しました。
次に、2つのjavascriptファイルの登録に進みました。1つはjquery用で、もう1つはブートストラップ用です。
public static void RegisterBundles(BundleCollection bundles)
{
var javascriptBundle = new Bundle("~/bundles/javascripts")
.Include("~/Scripts/jquery-{version}.js")
.Include("~/Content/bootstrap/js/bootstrap.js");
bundles.Add(javascriptBundle);
}
セットアップが完了したので、ページを表示するとどうなるか見てみましょう。
通常どおり、両方のjavascriptファイルが含まれていることがわかります。これは、web.configで「debug」フラグを設定した場合に発生します。
これをfalseに変えて、今何が起こるか見てみましょう。
これで、単一の参照が追加されましたが、非常にユニークな場所になっています。それをクリックすると、バンドルで参照されていた両方のjavascriptファイルの縮小および結合バージョンが吐き出されることがわかります。
この面白いクエリ文字列パラメーターv=loMmcAiXrKwMoVsM8Ok8Q5jVmuFQUI3fiiRVJQC33Hs1はコンテンツへの参照であり、Webサイトに何度アクセスしても同じままであることがわかります。(つまり、複数回更新します)。
javascriptファイルへの参照についてフィドラーが何を言っているか見てみましょう。
応答がcachableであることがわかります。キャッシュの有効期限は「2014年3月26日水曜日06:49:06GMT」に設定されています。今日からほぼ一年。
リソースへの後続のリクエストは、ブラウザのキャッシュから読み取られます。「このHTTP/304応答は、既存のキャッシュされた応答が新しいままであることを示します。HTTP/ 304応答のCache-lifetimeヘッダーを使用して、キャッシュされた応答の新鮮さを更新できます。」
さらに情報が必要な場合は、http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minificationも参照してください。