最近ASP.NET MVC备受瞩目,但事实是ASP.NET WebForms在一段时间内仍然不会消失。对于现有的开发人员,有没有办法优化ASP.NET WebForms,使其像ASP.NET MVC一样快速?
我注意到ASP.NET MVC和ASP.NET WebForms之间的速度差异很大。MVC比WebForms更快,加载页面更快。如果我优化ASP.NET WebForms,能否达到同样的效果?如果可以,你会推荐什么方法?
最近ASP.NET MVC备受瞩目,但事实是ASP.NET WebForms在一段时间内仍然不会消失。对于现有的开发人员,有没有办法优化ASP.NET WebForms,使其像ASP.NET MVC一样快速?
我注意到ASP.NET MVC和ASP.NET WebForms之间的速度差异很大。MVC比WebForms更快,加载页面更快。如果我优化ASP.NET WebForms,能否达到同样的效果?如果可以,你会推荐什么方法?
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="TestApp._Default" EnableViewState="false" %>
ViewState
将占据页面性能差异的大部分。此外,限制使用WebForm控件也会使您提供的HTML更少冗长,因为它们往往会产生非常冗长的HTML。ViewState
抽象状态是WebForms如今如此流行的主要原因之一。Panel
中,并确保禁用整个面板的ViewState
。随着我的开发,如果我发现需要使用ViewState
(例如,为了节省时间或简化事情),我会逐案打开它,以便我理解为什么要使用它,并做出有意识的决定来增加我的页面开销。技术并不重要,重要的是你如何实现你的应用程序。有人可能会争论ViewState会有所不同,但那也是一个实现细节。ViewState不是必需的,你也可以将其留在服务器上。最终,这两种技术都通过HTTP传递HTML。
其中一个原因是ViewState,还有其他一些作为<ASP:TextBox>
的一部分呈现的膨胀代码。你应该关注页面负荷。
其他条件相同,这是我所知道的主要性能差异。
我注意到速度上有明显的差异。
也许你应该先以可定义的方式正确地衡量性能。然后,如果确实存在差异,那么就会更清楚这种差异来自哪里,以及如何弥合这种性能差异。
有一件事情会导致ASP.NET变慢,其他人也提到过:视图状态(Viewstate)。这对ajax调用尤其如此。使用UpdatePanels时会发布完整的Viewstate。
话虽如此,有一件事情会让你的ASP.NET网站比ASP.NET MVC网站表现更好:缓存。ASP.NET允许甜甜圈缓存:您可以按WebControll基础定义缓存规则。在ASP.NET MVC中无法执行此操作。
如果您真的认为速度有问题,请尝试找到瓶颈。可能是数据库调用(使用sql-profiler进行检查),可能与html相关(使用yslow),或者可能是应用程序相关(尝试像redgate的分析器之类的工具)。
这是两种不同解决问题方法的两种不同工具之间进行比较的情况吗?