2013-04-29 210 views
45

我在Visual Studio中創建了一個全新的MVC4 Web應用程序,除此之外,它並沒有爲它添加一個Home控制器和一個「Hello world」索引視圖。然後,我安裝了MiniProfiler NuGet軟件包,並在_Layout.cshtml中放置了必要的幾行代碼。這是我所得到的,當我跑在釋放模式的網站(在IIS託管):ASP.NET MVC渲染看起來很慢

MVC rendering picture

渲染時間頁面加載不同,但130MS是一樣快,因爲它得到。這對我來說似乎有點慢,因爲我看到其他人以30毫秒或更快的速度渲染頁面。任何想法爲什麼渲染將會因爲一個全新的空MVC4項目而變得緩慢?我的處理器是Intel Core i5-2400,機器有16GB RAM。

順便說一句,這是而不是第一次加載頁面;在獲得這個130ms結果之前,我重新加載了這個頁面幾次。

UPDATE:
我跟着從PSCoder答案(刪除所有,但RazorViewEngine)的建議,並減半演出時間:

MVC rendering picture 2

這是非常好的,但我對於頁面的主要動作Render仍然會獲得大約70ms或更高;理想情況下,我希望減半或更好。

具體來說,我想問:

  • 這是否渲染時間似乎過於緩慢或者是平均值我的機器?
  • 有什麼辦法可以加快速度嗎?
+0

唯一你提到的未知數據是分析器工具本身。也許可以消除這種情況,並使用控制檯應用程序來創建「HttpClient」或「WebClient」或任何你想要的,通常下載頁面,然後看看它實際需要多長時間。在一個循環中運行幾十次或幾百次,然後手動記錄時間。 – 2013-04-29 14:38:54

+0

@Joe除了我已經看到其他人使用MiniProfiler和獲得30ms渲染的截圖。 – Jez 2013-04-29 14:40:03

+1

你可以做出更好的截圖嗎?這是很難閱讀,並充滿了不必要的空白。 – Amy 2013-04-29 14:40:50

回答

73

這可能有助於改善ASP.NET MVC相關的性能問題,您可以做的一項性能改進是清除所有視圖引擎並添加您使用的一個或多個。比如說: - RazorViewEngine。 MVC在默認情況下注冊2個視圖引擎WebformsRazor視圖引擎,因此清除並添加單獨使用的引擎會提高查找性能。

您可以在global.asaxApplication_Start中加入此項。

 ViewEngines.Engines.Clear();  
     ViewEngines.Engines.Add(new RazorViewEngine());  

爲了完全利用視圖查找緩存並再次性能增益在釋放模式編譯代碼,並確保您的web.config文件配置了<compilation debug="false" />的視圖查找緩存中踢。

+2

這有助於提高性能,但爲了增加這個答案,在我的網站的腿周圍放置了一個球和鏈是'System.Web.Optimization' beta 2,它確實減慢了一切,請參見[這裏](http:// stackoverflow。 COM /問題/ 16302406 /設置,調試假實際上可引起-遠慢渲染)。升級該軟件包後,我的網站要快得多。 – Jez 2013-05-01 12:32:52

+1

雖然這真的很奇怪,但很好,你發現問題所在,並能夠解決性能問題...... :) – PSL 2013-05-01 14:08:20

+1

使用[異步部分視圖]怎麼樣(http://blog.michaelckennedy.net/2012/ 11/13/improve-perceived-performance-of-asp-net-mvc-websites-with-async-partialviews /)或[Creating Asynchronous Actions](http://www.codeguru.com/csharp/.net/net_asp /mvc/creating-asynchronous-actions-in-asp.net-mvc.htm)在mvc中? – stom 2015-05-05 16:12:34

55

添加到@PSL的答案 - 我們永遠只能檢查`.CSHTML文件

ViewEngines.Engines.Clear(); 

IViewEngine razorEngine = new RazorViewEngine() { FileExtensions = new string[] { "cshtml" } }; 

ViewEngines.Engines.Add(razorEngine); 

此外,請確保您在Release Mode運行 - 這絕對是至關重要的,因爲ASP /剃刀/ MVC「適用於一些非常積極的緩存'當處於發佈模式時

<compilation targetFramework="4.0" debug="false">在您的Web.Config文件中。

薩姆藏紅花/堆棧溢出看着視圖渲染性能也:

http://samsaffron.com/archive/2011/08/16/Oh+view+where+are+thou+finding+views+in+ASPNET+MVC3+

+1

+1好點... – PSL 2013-05-01 21:54:32

0

查看使用之前被編譯 - 所以在第一個場合,他們是緩慢的。

隨後如果.cshtml文件更改,則會重新編譯它們 - 這意味着正在監視存儲視圖的目錄。所以硬盤速度將成爲MVC觀點的一個因素。

即使它們什麼都不做,每個渲染引擎都會檢查硬盤上的.cshtml.aspx文件。由於刪除渲染引擎使得它運行快兩倍,我懷疑磁盤速度的問題是:

  • 查看存儲在網絡驅動器上,或
  • 硬盤速度很慢