2013-03-26 82 views
6

我很想知道asp.net捆綁如何工作。asp.net捆綁如何在內部工作

我知道我們必須將所有腳本,css和圖像添加到捆綁包中,以便瀏覽器將啓動對所有資源的單個請求。

我有些困惑,頁面將如何從客戶端瀏覽器引用這些捆綁資源。

回答

8

讓我們來看看在System.Web.Optimization中使用綁定時會發生什麼。

在這個例子中,我使用了「Empty ASP.NET MVC 4模板」,並從nuget中獲取了最新的「Microsoft.AspNet.Web.Optimization」包。

然後我開始註冊2個JavaScript文件。一個用於jquery,另一個用於引導。

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); 
} 

現在我們已經完成了設置,讓我們看看當我們查看頁面時會發生什麼。

debugview

你可以看到,無論是JavaScript文件只是包括作爲我們通常會做。當你在web.config中設置了「debug」標誌時,會發生這種情況。

讓我們把它變成假,看看現在會發生什麼。

debugsettofalse

現在我們看到的是加入一個參考,但有一個非常獨特的看位置。通過點擊它,我們可以看到它吐出了我們的軟件包中引用的兩個JavaScript文件的縮小和合並版本。

funnycharacters

這個有趣的查詢字符串參數v = loMmcAiXrKwMoVsM8Ok8Q5jVmuFQUI3fiiRVJQC33Hs1是我們的內容的引用,我們可以看到,無論我們有多少次命中的網站,它會保持不變。 (即多次刷新)。

讓我們來看看小提琴手對我們的javascript文件的引用。

cache

我們可以看到,響應是可緩存。緩存到期時間設置爲「Wed,26 Mar 2014 06:49:06 GMT」。距離今天差不多一年。

對資源的後續請求將從瀏覽器的緩存中讀取。 「此HTTP/304響應表示現有的緩存響應保持新鮮,HTTP/304響應中的緩存生命期標頭可用於更新緩存響應的新鮮度。」

如果您需要了解更多信息,請參見也http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

+0

你可以不用解釋它任何好轉。 – 2016-07-22 17:04:13