Geo*_*ker 308
可能的改进来源的汇编清单如下:
一般
高速缓存
CompiledQuery.Compile()
递归避免重新编译查询表达式OutputCacheAttribute
以保存不必要和操作执行来缓存不易发生变化的内容ActionResult
如有必要,编写自定义方法RouteName
组织路由然后使用它来生成链接,并尝试不使用基于表达式的ActionLink方法.PartialViews
,避免渲染它xxxx次:如果你最终在同一个视图中调用相同的部分300次,可能会出现问题.解释和基准路由
使用Url.RouteUrl("User", new { username = "joeuser" })
指定的路线.Rudi Benkovic的ASP.NET MVC Perfomance
使用Rudi Benkovic的这个助手ASP.NET MVC Perfomance解析缓存路由UrlHelperCached
安全
DAL
负载均衡
客户端
全局配置
如果您使用Razor,请在global.asax.cs中添加以下代码,默认情况下,Asp.Net MVC使用aspx引擎和剃刀引擎进行渲染.这只使用RazorViewEngine.
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewEngine());
在web.config中添加gzip(HTTP压缩)和静态缓存(images,css,...)
<system.webServer>
<urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true"/>
</system.webServer>
<pages buffer="true" enableViewState="false">
ziy*_*iya 11
基本建议是遵循REST原则,以下几点将这些原理与ASP.NET MVC框架联系起来:
Luk*_*Led 10
Code Climber和此博客条目提供了提高应用程序性能的详细方法.
编译查询将提高应用程序的性能,但它与ASP.NET MVC没有任何共同之处.它将加速每个数据库应用程序,因此它不是真正关于MVC.
这不是一个惊天动地的优化,但我想我会把它扔出去 - 使用CDN用于jQuery等.
来自ScottGu本人的引用:Microsoft Ajax CDN使您能够显着提高使用ASP.NET AJAX或jQuery的ASP.NET Web窗体和ASP.NET MVC应用程序的性能.该服务免费提供,无需任何注册,可用于商业和非商业目的.
我们甚至将CDN用于使用jQuery的Moss中的webparts.
通过LINQ访问数据依赖于IQueryable ...
...并获得良好的存储库模式:
这将优化数据访问,以确保仅加载所需数据,并且仅在需要时加载.
此外,如果您使用NHibernate,您可以打开并为查询设置二级缓存并添加到查询范围和超时.EF,L2S和NHibernate 还有kick ass profiler - http://hibernatingrhinos.com/products/UberProf.它将有助于调整您的查询.
小智 5
我还要补充一下:
使用Sprite:Sprites是减少请求的好东西.您将所有图像合并为一个图像并使用CSS来获取精灵的大部分内容.Microsoft提供了一个很好的库来实现它: Sprite和Image Optimization Preview 4.
缓存您的服务器对象:如果您有一些很少更改的引用列表或数据,您可以将它们缓存到内存中,而不是每次都查询数据库.
使用ADO.NET而不是Entity Framework:EF4 or EF5
非常适合减少开发时间,但优化会很痛苦.优化存储过程比实体框架更简单.所以你应该尽可能地使用商店程序.Dapper提供了一种查询和映射SQL的简单方法,具有非常好的性能.
缓存页面或部分页面:MVC根据一些参数为缓存页面提供了一些简单的过滤器,因此请使用它.
减少数据库调用:您可以创建一个返回多个对象的唯一数据库请求.查看Dapper网站.
始终拥有一个干净的架构:即使在一个小项目上,也要拥有干净的n层架构.它将帮助您保持代码清洁,并在需要时更容易优化它.
您可以查看此模板" Neos-SDI MVC模板 ",它将为您创建一个干净的体系结构,默认情况下会有很多性能改进(请查看MvcTemplate 网站).
归档时间: |
|
查看次数: |
92912 次 |
最近记录: |