簡體   English   中英

什么時候不使用MVC Bundling?

[英]When NOT to use MVC Bundling?

我在最近的項目中遇到了一個奇怪的問題。 我使用Trent Richardson的Timepicker控件來獲取我的MVC 4應用程序中的時間選擇器功能。 我使用MVC捆綁功能捆綁了相關的JQuery文件。 我發現這在開發環境中運行得很好(Visual Studio 2012)。

但是當我在IIS上部署網站時,我開始面臨一個奇怪的問題,並且在該特定包中存在javascript錯誤“ 函數預期 ”。 我可以看到捆綁包已加載,因為開發人員工具在“腳本”選項卡中選擇該捆綁包時顯示了javascript代碼。

最后,當我直接引用JQuery文件而不是bundle時,它開始在IIS上正常工作。 雖然問題得到了解決,但我現在很想知道捆綁時該特定文件出了什么問題,如果MVC捆綁實際上是一個問題,那么為什么它在開發環境中運行良好,而不是在IIS中呢?

任何燈都非常贊賞。

縮小是一個復雜的過程,通過使用變量名稱縮短,空白消除,注釋刪除等技術縮小腳本/樣式...它使用依賴於WebGrease進行縮小的ASP.NET Web優化。 當然,可能有問題,但我個人從未注意到這一點。

以下是一些不應使用捆綁的情況

  • 您的捆綁包中只有一個文件 為何捆綁?
  • 您只使用着名的框架,如JQuery或jQuery UI 不要重新分發已由其他人提供的腳本。 Google / Microsoft / Amazon / ...已經為最流行的開源JavaScript庫提供CDN。

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

  • 你的捆綁只需要幾個字節 Web性能優化建議限制Web請求的數量。 一切都有成本。 不是很優化,但有時最好在頁面中放入內聯腳本。

  • 在某些架構中 Bundles請求包含用於緩存的唯一標識符。 如果包中的任何文件發生更改,ASP.NET優化框架將生成一個新令牌,保證對該包的瀏覽器請求將獲得最新的包。 使用某些體系結構時,JS更新可能會頻繁發生,並且會使所有捆綁包失效。
  • 論開發環境 調試捆綁包真的很痛苦。

隨着Cyber​​maxs的回復,我在ASP.NET論壇上發布時也收到了以下回復。如果這有助於訪問者。

捆綁假設要做的是將單個包中的腳本/樣式表文件組合到一個請求中並將其發送到客戶端,以便瀏覽器必須減少調用以獲取所需的腳本文件。 在開發環境中,當您在visual studio中進行調試時。 除非您指定這樣做,否則它不會執行上述過程。 但是在生產環境中,當web.config文件中的debug設置為false時。 它將開始執行上述過程。 還有其他一些原因。 例如腳本可能有兩個版本。 一個用於調試,一個用於生產。 淘汰出現了這種情況。 在我的開發環境中,我引用了腳本的調試版本。 但當我把它放入生產環境時,一切都變成了一種騷動。 有一個淘汰腳本文件的發布版本,我不得不引用它以使一切工作再次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM