Asp.net mvc 直接在MVC中指定视图位置是否更有效?
我想让代码尽可能高效地运行。我有位于以下位置的视图:Asp.net mvc 直接在MVC中指定视图位置是否更有效?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我想让代码尽可能高效地运行。我有位于以下位置的视图: ~/Areas/Administration/Views/Accounts/Create.cshtml 我想知道的是,是否有人研究过这样直接编写视图位置代码是否更有效: return View("~/Areas/Administration/Views/Accounts/Create.cshtml", vm); 如果不是这样编码,我相信它会首先搜索以下所有位置: ~/Areas/Administration/Views/Accounts/
~/Areas/Administration/Views/Accounts/Create.cshtml
我想知道的是,是否有人研究过这样直接编写视图位置代码是否更有效:
return View("~/Areas/Administration/Views/Accounts/Create.cshtml", vm);
如果不是这样编码,我相信它会首先搜索以下所有位置:
~/Areas/Administration/Views/Accounts/Create.aspx
~/Areas/Administration/Views/Accounts/Create.ascx
~/Areas/Administration/Views/Shared/Create.aspx
~/Areas/Administration/Views/Shared/Create.ascx
~/Views/Accounts/Create.aspx
~/Views/Accounts/Create.ascx
~/Views/Shared/Create.aspx
~/Views/Shared/Create.ascx
~/Areas/Administration/Views/Accounts/Create.cshtml
不要担心这一点,永远不要像这样硬编码查看位置。在
Release
模式下运行时,ASP.NET MVC会缓存这些位置,并且不会执行所有昂贵的查找。Sam Saffron在博客文章中查看位置。两个结论:
- 在运行发布版本时,视图位置会被缓存,因此不会造成性能损失
- 在调试模式下,您可以通过删除对未实际使用的视图引擎(例如WebForms)的支持来提高性能
因此,我支持Darin的建议,即硬编码视图位置只会给您带来不便,而且如果您按照本书的要求做其他事情,也不会带来性能方面的好处。我90%确信您的假设是正确的。如果您为了任何事访问数据库,这将需要100000次(字面上!)比在内存中执行任何缓存的查找都要长。一旦你清理了多余的SQL连接,选择了N+1方案并在RAM中缓存了常用数据,那么在更快的硬件上花钱可能比花在程序员时间上要便宜。你会建议不要使用通过T4MVC创建的常量,然后。。。它们最终输出的是相同的东西,IIRC。@安德鲁·巴伯,就我个人而言,我从未使用过T4MVC,因此无法判断它对性能的影响,但请记住,在发布模式下,两个版本之间没有性能差异,如果你说使用T4MVC最终得到的是硬编码的视图位置,则不会有任何差异。哦,是的;说得好!我的“逻辑思考”帽子今天在车里+1.