使用 Bundle 可以將多個 JS文件或 CSS 文件合併成一個文件,並且壓縮。這樣可減少瀏覽器需下載多個文件的請求時間,同時通過移除JS/CSS文件案中空白、批註及修改JavaScript內部函數、變數名稱的壓縮手法,能有效縮小文件案體積,提高傳輸效率,提高使用者的瀏覽體驗。 基本使用 Glob ...
使用 Bundle 可以將多個 JS文件或 CSS 文件合併成一個文件,並且壓縮。這樣可減少瀏覽器需下載多個文件的請求時間,同時通過移除JS/CSS文件案中空白、批註及修改JavaScript內部函數、變數名稱的壓縮手法,能有效縮小文件案體積,提高傳輸效率,提高使用者的瀏覽體驗。
基本使用
Global.asax
protected void Application_Start() { BundleConfig.RegisterBundles(BundleTable.Bundles); }
BundleConfig
public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js")); bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( "~/Scripts/bootstrap.js", "~/Scripts/respond.js")); }
視圖
@Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap")
啟用Bundle(合併壓縮)的2種方式
-
在
BundleConfig
中RegisterBundles
方法添加以下代碼public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js")); // 啟用合併壓縮 BundleTable.EnableOptimizations = true; }
-
打開
web.config
文件,設置編譯的debug=false
<system.web> <compilation debug="false" targetFramework="4.5" /> </system.web>
變化效果
合併之後減少了請求的數量,JS文件和CSS文件大小都減少了,提高了頁面的載入速度。
註意事項
-
合併壓縮後的文件預設緩存一年。如果你重覆打開網頁,並且配置的文件也沒有做修改的情況下,伺服器會返回一個 HTTP 304 的狀態碼,這樣瀏覽器會載入緩存中的文件。
-
圖片路徑問題,將多個CSS合併在一起後,有的時候會導致圖片載入失敗的情況
解決方法:圖片使用絕對路徑
-
在
BundleConfig
配置中配置的壓縮的文件是 a.js (未壓縮版本) ,並且在相同目錄中存在 a.min.js 文件。當你修改了 a.js 文件後,希望合併壓縮後的 JS 文件也包含修改後的內容,然而並非我們所希望的那樣,壓縮後的 JS 文件還是引用了a.min.js 中的內容,之前修改的並沒有出現在壓縮的 JS 文件中。同理,CSS也是如此。