2015-05-19 57 views
13

我正在使用ASP.net MVC 4.像問題狀態,如果我把一堆JS文件(或CSS,爲此)捆綁成一個包,會自動被縮小?例如,要我讀捆綁:ASP.net捆綁器是否自動縮小文件?

 bundles.Add(new ScriptBundle("~/bundles/exampleBundle").Include(
      "~/Scripts/jquery-masked.js" 
      "~/Scripts/jquery.idletimer.js" 
      )); 

還是應該代替最初包括縮小的文件:

 bundles.Add(new ScriptBundle("~/bundles/exampleBundle").Include(
      "~/Scripts/jquery-masked.min.js" 
      "~/Scripts/jquery.idletimer.min.js" 
      )); 

編輯:現在我想知道是否捆綁.min文件,而不是添加任何優化。它是否會提高性能,包括捆綁包中的.min文件而不是基本文件? (也許「縮小器功能」需要一些時間?)

+1

確定您可以添加此參數BundleTable.EnableOptimizations = true; – rnofenko

回答

13

的Asp.Net捆綁並捆綁在同捆的所有腳本到一個單一的文件中,它們在包中定義的順序列出。然後將這個單個文件縮小並傳送給客戶端。

如果在腳本目錄中同時包含腳本的正常版本和縮小版本,那麼捆綁器將在調試會話期間自動部署完整腳本,並在生產期間自動部署完整腳本。除非要將縮小版本部署到調試會話,否則應避免在捆綁配置中引用腳本的縮小版本。

+1

所以,爲了澄清一下,如果縮小文件存在於您的目錄中,它會自動部署該文件(在生產會話期間),而不是進行任何縮小轉換? – AlbatrossCafe

+3

如果捆綁包中所有腳本的縮小版本都存在,它們仍將捆綁到一個捆綁包文件中,但該文件不會進行任何進一步縮小。否則,縮小版本將與未縮小的文件一起內嵌在文件中,文件*將*進行縮小。 – Claies

13

您不必包含縮小文件,這是由捆綁引擎自動完成的。事實上,我記得包括縮小文件引起的問題(也許這是固定的最新版本的mvc)

您可能認爲這是行不通的,因爲優化(捆綁和縮小)只在web.config上執行debug=false時執行。

<system.web> 
    <compilation debug="false" /> 
</system.web> 

有一種方法,即使debug = true使用BundleTable.EnableOptimizations給力優化。這裏有一個例子

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
       "~/Scripts/jquery-{version}.js")); 

    BundleTable.EnableOptimizations = true; 
} 
1

這是兩個不同的術語,稱爲捆綁和縮小。
縮小:你是縮小版本的JS文件,通過重命名變量壓縮內容。
捆綁:完全是另一回事。爲了減少網絡往返,最好將所有內容合併到一個文件中,並在一個請求中將其下載到客戶端。

因此,您可以捆綁JS的縮小版以獲得此收益。

+0

雖然這不直接回答問題,但它是* Minification *和* Bundling *之間區別的很好解釋。 –