文章出處

2017-01-06 更新

在 BundleCollection 的構造函數中添加了 3種默認規則

public BundleCollection()
        {
            BundleCollection.AddDefaultFileExtensionReplacements(this.FileExtensionReplacementList); //文件擴展名替換規則
            BundleCollection.AddDefaultFileOrderings(this.FileSetOrderList);//排序規則
            BundleCollection.AddDefaultIgnorePatterns(this.IgnoreList); //忽略規則
        }

啟用合并壓縮功能后會忽略 *.intellisense.js ,*-vsdoc.js, *.min.js,  *.min.css  ,所以你在BundleConfig 配置了 *.min.js 是不會加載的。 

 

使用 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種方式

  1. BundleConfigRegisterBundles方法添加以下代碼

    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                     "~/Scripts/jquery-{version}.js"));
    
        // 啟用合并壓縮
       BundleTable.EnableOptimizations = true;
    }
  2. 打開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也是如此。

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()