[英]ASP.NET Page performance
我们有一个相当复杂的页面,动态加载用户控件(其中一些是嵌套的)。 这是一个非常慢的页面。
动态添加控件是否会增加瓶颈? 如果我们在.NET缓存对象中添加控件而不使用LoadControl(如果它已经存在于缓存中)会有帮助吗?
有关使页面更快的任何其他提示/策略?
我们曾将ASP.Net项目的性能提高了一个数量级。 以下列出了我们尝试的内容:
将Trace =“true”添加到@Page指令中,您将能够看到哪些方法花费的时间最长。
如果简单地动态加载控件会导致很大的性能成本,我会感到有些惊讶。 但是,如果有很多控件,并且它们是深层嵌套的,那么ASP.NET有时会很慢地将它们呈现为html。 显然,正如其他人建议的那样进行分析,以确定你的瓶颈究竟在哪里。
对于复杂页面,要检查的一件事是渲染的html的大小。 使用许多服务器控件,页面大小可以惊人地快速爬升到数兆字节。 打开或调整您的http压缩可能是您正在寻找的答案。
调查性能问题的第一步是确定瓶颈:是网络流量(HTTP请求太多?管道中有太多HTML?)还是服务器上绑定的CPU? 或太多的数据库调用?
在许多情况下,页面的大小会导致速度变慢。 如果你在你的页面上包含了很多控件,那么会有很多HTML,所以如果你在最终渲染的产品上做一个查看源并找到20000行HTML / javascript,那么它的减速可能就太多了数据通过网络发送。
我建议使用像YSlow这样的工具来帮助更好地理解最终渲染的产品。
要看的关键项目:
动态加载用户控件绝对不是性能降低的原因。 通常会阻止ASPX页面性能显着的一件事就是viewstate。 我建议将viewstate从页面中取出[即使你已经在某些控件上启用了它]。
将完整的视图状态存储为服务器上的会话变量,并仅在视图状态字段中传输标识符。 您可以在这里查看完整的文章,文章还提供了性能测量指标。
我怀疑它是动态加载控件的行为,它会减慢它的速度,更多的是每个控件的行为。 他们都打了DB吗? 在尝试优化加载之前,我会看看你是否可以简化控件的性能(缓存数据库调用等)。
我会在页面上做一些分析,看看真正的减速发生在哪里。 通常根据我的经验,我认为可能导致实际减速并不是最慢的地方。 当事情开始变得缓慢时,我发现最好对我的应用程序/页面进行分析,这样就可以让我获得非常好的信息,告诉我哪些方面可以最快速地获得戏剧性的提升。 您可能会发现它有太多的数据库调用,或者用户控件加载,或者您没有考虑过的其他内容。
网页可能表现缓慢的原因有很多。 你真的需要使用性能向导之类的工具来开始确定正在发生的事情。
我们最新的性能问题归结为匿名类型和linq。 由于所有JIT编译都在进行,所以很容易用这两件事来扼杀性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.