本篇文章作用说明:
Asp.net MVC Filter监控View实例,监控每个View页面加载的时间,跟踪分析每个页面的加载性能,然后做进一步优化;
问题背景
最近,客户一直反馈系统使用慢,有时候能够指出具体是哪个页面,有时候又只是笼统地反馈慢。这种问题就像是幽灵一样,
非常不好处理。因为导致这种问题的因素非常之多,而且在开发工程中,很难模拟出实际运行是的环境。理论上,对于所有
的页面做压力测试是个解决方案,但是这种方式的成本太高,又没有办法很快地定位和解决客户的问题。
最后,考虑通过创建Filter来在访问Action之前记录一个时间,在页面Render完成之后,再记录一下时间。通过比较这2个时间
的差值来跟踪每个页面的加载性能。
处理方法
通过过滤器进行跟踪每个页面的加载时间,具体通过继承ActionFilterAttribute, 分别重写OnActionExecuting和
OnResultExecuted方法进行监控和记录。
代码实例
public class PageLoadPerformanceAttribute : ActionFilterAttribute
{
//这里使用log4net来打印出结果
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurren