记一次完整的asp.net-mvc页面优化过程

最近在重构一个MVC项目,项目结构堪称混乱,问题多多,但今天说的是页面打开速度的问题。项目中包括web后台系统,几乎随便点一个页面都要盯着白屏等待2-5秒之久,体验很差。通过对页面性能逐步的分析和判断,并做相应优化,最终页面打开速度在300ms内。

一、项目结构

后台系统使用了典型的ASP.Net MVC框架,但是版本略旧,MVC4,EF5,基本没有采用其它的技术工具,业务逻辑大致都混乱的分布在Controller和Model层。习惯了ABP框架,相比之下这个就显得简陋了。至于View层,摘要中提到了白屏,可以知道前端页面使用多页开发,后台服务器渲染,正是Razor模板引擎,版本2.0。

登录后台系统,随便点击左侧菜单,右侧打开页面,大概需要白屏等待2-5秒。咦,怎么会如此之慢?!

于是基于一个典型的页面,开始进行监测分析。我选择了[所有用户]菜单,页面打开速度在4秒左右,页面结构和功能都相对简单,上面是一个搜索条件区域,可以按照姓名部门角色等条件组合搜索,下面就是用户列表和分页,展示大约10个字段,大致示意图如下(虽然是测试阶段,但数据真实,为避免泄露客户信息,而且页面结构简单易于描述,所以不做截屏展示)。

二、问题分析

页面的大概执行周期如下图示:

三、改进过程

--End

原文地址:https://www.cnblogs.com/jiujiduilie/p/9419460.html

时间: 2024-10-06 00:53:25

记一次完整的asp.net-mvc页面优化过程的相关文章

Asp.Net MVC页面静态化功能实现二:用递归算法来实现

上一篇提到采用IHttpModule来实现当用户访问网站的时候,通过重新定义Response.Filter来实现将返回给客户端的html代码保存,以便用户下一次访问是直接访问静态页面. Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter 后来想到可以通过WebRequest获取html代码,然后采用递归算法来实现.基本实现思路如下: 通过WebRequest获取超链接地址返回的html代码,并保存:通过正则表达式匹配html代码中所有的超链接hr

Asp.Net MVC 页面代码压缩筛选器-自定义删除无效内容

Asp.Net MVC 页面代码压缩筛选器 首先定义以下筛选器,用于代码压缩. /*页面压缩 筛选器*/ public class WhiteSpaceFilter : Stream { private Stream _shrink; private Func<string, string> _filter; public WhiteSpaceFilter(Stream shrink, Func<string, string> filter) { _shrink = shrink;

ASP.NET MVC页面报错System.InvalidOperationException The view found at &#39;~/Views/Home/Index.cshtml&#39; was not created.

Application Exception System.InvalidOperationException The view found at '~/Views/Home/Index.cshtml' was not created. Description: HTTP 500.Error processing request. Details: Non-web exception. Exception origin (name of application or object): System

asp.net mvc 页面内容呈现Html.Raw HtmlString

asp.net mvc 页面内容呈现Html.Raw Html.Raw内容经过页面呈现,不呈现Html标签 @Html.Raw( File.ReadAllText(Server.MapPath("~/Content/html/about.html"))) HtmlString内容不经过页面处理呈现,原样呈现,含Html标签 @(File.ReadAllText(Server.MapPath("~/Content/html/about.html"))) 或 @( ne

asp.net mvc 页面传值的方法总结

转自:http://msprogrammer.serviciipeweb.ro/2012/01/15/usual-methods-to-transfer-data-from-page-to-page-in-asp-net-mvc/ Usual Methods to transfer data from Page To Page in ASP.NET MVC Preamble: In ASP.NET ( like in PHP and other Web frameworks) there are

ASP.NET MVC 页面调整并传递参数

转自:http://blog.csdn.net/zhensoft163/article/details/7174661 使用过ASP.NET MVC的人都知道在MVC中页面后台中常用的页面跳转方法有几种,如:return View().return RedirectToAction() 一般情况下我们返回的都是本页面,所以使用return View()就可以解决问题了,但是很多时候我们也会遇到返回的页面不是本页面的,那么就会用到后面两种,但是如果我们在页面返回的时候也要返回操作的结果的时候,我们

使用Filter跟踪Asp.net MVC页面加载(转)

转载地址:http://www.cnblogs.com/JustRun1983/p/4027929.html 最近,客户一直反馈系统使用慢,有时候能够指出具体是哪个页面,有时候又只是笼统地反馈慢.这种问题就像是幽灵一样,非常不好处理.因为导致这种问题的因素非常之多,而且在开发工程中,很难模拟出实际运行是的环境.理论上,对于所有的页面做压力测试是个解决方案,但是这种方式的成本太高,又没有办法很快地定位和解决客户的问题. 最后,考虑通过创建Filter来在访问Action之前记录一个时间,在页面Re

使用Filter跟踪Asp.net MVC页面加载时间

最近,客户一直反馈系统使用慢,有时候能够指出具体是哪个页面,有时候又只是笼统地反馈慢.这种问题就像是幽灵一样,非常不好处理.因为导致这种问题的因素非常之多,而且在开发工程中,很难模拟出实际运行是的环境.理论上,对于所有的页面做压力测试是个解决方案,但是这种方式的成本太高,又没有办法很快地定位和解决客户的问题. 最后,考虑通过创建Filter来在访问Action之前记录一个时间,在页面Render完成之后,再记录一下时间.通过比较这2个时间的差值来跟踪每个页面的加载性能.如果对于MVC中的Filt

ASP.NET MVC 页面重定向

在asp.net中页面重定向:Server.Execute("m2.aspx"); 服务器保存此页转向前的数据后,使页面转向到m2.aspx执行, 再返回本页继续执行.再将三者结果合并后返回给浏览器. 以上都是服务器端页面转向所以浏览器不出现页更改记录(显示的地址不会改变).因此,如果用户刷新此页,也许会出现一些其它意外情况. 此类页转向,可完成一些其它功能,比如访问到前一页面中的服务端控件. 3.Response.Redirect: 当浏览器请求aspx页面时,碰到Redirect(