2011-12-16 119 views
9

我剛剛在我的網站上連接了mvc-mini-profiler(感謝SO!),並且正在四處尋找我到目前爲止做得如何(這是我第一次使用實體和mvc進行linq)。到目前爲止,一切都看起來不錯,但我一直在尋找改善響應時間的方法。在這一點上,看起來我能得到的唯一重大提升將來自於減少在每個頁面上呈現單個視圖所需的時間。MVC渲染加速

profiler screeny

你可以從我的screeny看到Blog視圖的渲染是運行時間最長的任務。我知道30ms已經非常快,但我敢打賭我仍然可以利用一些技巧來讓這些數字更低。

所以問題是這樣的:如何減少視圖渲染時間?我知道將動態視圖緩存到HttpRuntime.Cache之類的東西可以提供幫助,但我甚至會看到靜態視圖呈現的持續時間爲幾ms。您使用什麼技術來降低視圖的渲染時間?

+0

你是從數據庫的視圖構建對象?沒有任何關於代碼中發生的事情的想法很難提供建議。 – 2011-12-16 04:41:18

+0

你可以再次運行你的測試,但要確保你正在`Release`下運行MVC應用程序。博客有多複雜?它是否調用多個孩子的動作或部分? – Omar 2011-12-16 04:45:34

回答

3

我建議兩件事情(如果你沒有它尚未完成)...

  1. 刪除未使用的ViewEngines。因此,如果您的項目只使用剃鬚刀視圖引擎,請在Application_Start()上的global.asax中執行此操作。

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

    ViewEngines.Engines.Add(new WebFormViewEngine()); 
    
    如果使用WebFormsViewEngine

    只有

  2. 最大的改良效果是使用OutputCacheAttribute緩存HTML。我不認爲在每次請求您的Blog的變化;)

    public class BlogController : Controller 
    { 
        [OutputCache] 
        public ActionResult Index() 
        { 
         // do something here 
         return View(); 
        } 
    } 
    

您可以設置緩存持續時間等。退房:MSDN - OutputCacheAttribute