Improve ASP.NET Performance By Disabling ViewState And Setting Session As ReadOnly
During recent engagement we tried to improve performance of some web page. Original response time was 0.74 seconds. Our objective was to get 0.4 seconds.
The page was simple Html Frameset that was loading two dynamic ASPX pages. Using technique described in Performance Testing For The Masses we identified that it takes 0.4 seconds for one page and 0.2 seconds for another to run on the server (we used time-taken property of the IIS log).
Reviewing the code revealed that there is usage of server controls and both pages read from the Session object.
The assumption was that since no user input is done we can disable ViewState saving on CPU to build the ViewState.
The other assumption was that since the Session is accessed for read only then we can set it as read only saving on locking and preventing race conditions.
This is how each page's header looked after the change:
<%@ Page EnableViewState=”false” EnableSessionState=”ReadOnly” ...%>
Simple change for ASP.NET mark up, no rebuild required.
After running load test for this new version of ASPX page response time was 0.35 seconds.
Another metric was ASP.NET\ Request Execution Time performance counter that dropped from 0.7 seconds to 0.3 seconds.
Sweet.
Source of performance wisdom is here Improving .NET Application Performance and Scalability
Enjoy
Comments
- Anonymous
August 16, 2007
I think disabling viewstate is the main reason.Also it is possible to disable:validateRequest="false" enableEventValidation="false"and set compilation debug to false - Anonymous
August 16, 2007
The comment has been removed - Anonymous
August 17, 2007
agree regarding security points, howeversetting compilation debug "false" proved to be efficient especially in .net 2.0and it is "true" by default - Anonymous
August 17, 2007
w/r to debug "The default is False."http://msdn2.microsoft.com/en-us/library/s10awwz0.aspx - Anonymous
January 01, 2008
During recent few engagements with my customers I've noticed  VIewState is extensively [unintentionally] - Anonymous
January 01, 2008
During recent few engagements with my customers I've noticed  VIewState is extensively [unintentionally - Anonymous
January 21, 2008
Care about performance? Do you write your code with performance in mind? Want little help to spot performance