2011-12-16 141 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