MVC MiniProfiler是Stack Overflow團隊設計的一款對ASP.NET MVC的性能分析的小程序。能夠對一個頁面自己,及該頁面經過直接引用、Ajax、Iframe形式訪問的其它頁面進行監控,監控內容包括數據庫內容,並能夠顯示數據庫訪問的SQL(支持EF、EF CodeFirst等 )。而且以很友好的方式展示在頁面上。html
該Profiler的一個特別有用的功能是它與數據庫框架的集成。除了.NET原生的 DbConnection類,profiler還內置了對實體框架(Entity Framework)以及LINQ to SQL的支持。任何執行的Step都會包括當時查詢的次數和所花費的時間。爲了檢測常見的錯誤,如N+1反模式,profiler將檢測僅有參數值存在差 異的多個查詢。web
MiniProfiler是以Apache License V2.0協議發佈的,你能夠在NuGet找到。配置及使用能夠看這裏:http://code.google.com/p/mvc-mini-profiler數據庫
爲創建快速的網站黃金參考標準,雅虎2007年爲網站提升速度的13個簡易規則。小程序
以上這一段是照抄的張善友的博客,原文地址:http://www.cnblogs.com/shanyou/archive/2012/04/03/2430977.htmlmvc
注:我安裝的EF6,因此選擇此版本,其它版本可對應選擇。框架
注:這裏的MVC4是適用MVC4和5兩個版本的佈局
到這裏,咱們須要安裝的程序包就都已經安裝好了。性能
首先,在你的Global.asax文件中加入:測試
protected void Application_BeginRequest() { if (Request.IsLocal)//這裏是容許本地訪問啓動監控,可不寫 { MiniProfiler.Start(); } } protected void Application_EndRequest() { MiniProfiler.Stop(); }
而後找到你須要監控的頁面,在頁面中加入:網站
@using StackExchange.Profiling; @MiniProfiler.RenderIncludes();
注:若是想監控全部頁面,可將其加入到佈局頁中
而後在Web.config頁面中加入:
<system.webServer> <handlers> <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" /> </handlers> </system.webServer>
運行後效果:
MiniProfiler監測EF:
在Global.asax文件中加入MiniProfilerEF6.Initialize();,並引入對應命名空間using StackExchange.Profiling.EntityFramework6;
而後隨意寫個 controller測試一下:
運行後:
在這裏我用MiniProfiler對兩個查詢進行了分類,咱們能夠看到兩個查詢分別用了733.3ms和1027.5ms,佔整個頁面加載的52.4%。