Tips to improve asp.net application performance

Over 4 years or so working with asp.net I have learned to avoid and do certain things that increase the performance of an asp.net web application, in this post I will offer some tips that I've found useful for writing high-performance ASP.NET applications:

 

  • Deploy with ‘Release' build and ensure ‘Debug' is set to false in the web.config
Make sure you use Release Build mode and not Debug Build when you deploy your site to production. When you create the application, by default the attribute ‘Debug' is set to "true" in the web.config which is very useful while developing. However, when you are deploying your application, always set it to "false".  <compilation debug="false" ... />
  • Disable ViewState if you don’t need it
The ViewState is not needed when the following conditions are true:  
  a)The page does not post back (if it is used only to display data, only output page)
  b)The events of the server controls are not handled
  c)The controls are repopulated on each page refresh
  • Consider using caching
Caching avoids redundant work. If you use caching properly, you can avoid unnecessary database lookups and other expensive operations.ASP.NET allows you to cache entire pages, fragment of pages or controls. You can cache also variable data by specifying the parameters that the data depends. By using caching you help ASP.NET engine to return data for repeated request for the same page much faster.
  • Consider using HTTP compression
HTTP compression is supported by most modern browsers and by IIS. HTTP Compression is a define a way to compress content transferred from Web servers across the World Wide Web to browsers. The impact of compression is that the number of transmitted bytes is reduced and thus a higher performance is gained.
  • Consider disabling tracing
Before you deploy your application, disable tracing because it is not recommended to turn it on while the application is running in production. Tracing may cause performance issues.
<configuration> 
     <system.web>                   
          <trace enabled="false" pageOutput="false" /> 
     </system.web>
</configuration>
  • Consider using paging for large result sets
Paging large query result sets can significantly improve the performance of an application. The paging can be done at the SQL procedure level this will reduces the back-end work on the database, it be done at the server level to reduce the size of data that is sent to the client and that will be rendered as Html content.
  • Use 'using' statment to dispose resources
The using statement defines a scope at the end of which an object will be disposed even if an exception is thrown, please note that the object that you are trying to dispose should implement 'System.IDisposable'.The following code fragment demonstrates this.  
 
using (SqlConnection cn = new SqlConnection(connectionString))
{
    using (SqlCommand cm = new SqlCommand(commandString, cn))
    {
        cn.Open();
        cm.ExecuteNonQuery();
    }
}

 

  • Stored Procedures
Stored procedures provide improved performance to your asp.net application. When you develop stored procedures, keep the following recommendations in mind:  
·        
Use Set NOCOUNT ON in stored procedures, if you turn on the NOCOUNT option, stored procedures will not return the row-count information to the client, and this will prevent SQL Server from sending the DONE_IN_PROC message for each statement in the stored procedure.
·         Do not use the sp_ prefix for custom stored procedures, Microsoft does not recommend to use the prefix "sp_" in the user-created stored procedure name, because SQL Server always looks for a stored procedure beginning with "sp_" in the master database.

 

  • String Management

Use the += operator when the number of appends is known.
Use the StringBuilder object when the number of appends is unknown.  

  • Consider using DTO pattern
In some cases to satisfy a single client request it require making multiple calls to the remote interface, so instead of doing multiple calls consider using Data Transfer Object (DTO) that holds all the data required by the remote call in one single object.
  • Consider using Server.Transfer instead of Response.Redirect
Both cause a new page to be processed, but the interaction between the client and server is different in each situation. Server.Transfer acts as an efficient replacement for the Response.Redirect method. Response.Redirect specifies to the browser to request a different page. Because a redirect forces a new page request, the browser makes two requests to the Web server, so the Web server handles an extra request. IIS 5.0 introduced a new function, Server.Transfer, which transfers execution to a different ASP page on the server. This avoids the extra request, resulting in better overall system performance

 Reference :
 Checklist: ASP.NET Performance: http://msdn.microsoft.com/en-us/library/ff647706.aspx 

 

7 Comments

  • Instead of try/finally for resources use a using:

    using (SQLConnection conn = new SQLConnection(blah))
    {
    conn.Open();
    ...
    conn.Close();
    }

  • * Deploy with ‘Release' build and ensure ‘Debug' is set to true in the web.config

    I think this should be NOT to true

  • This post is very useful for me. Thank you very much.

  • "Use Try/Finally on Disposable Resources" ?

    While there are some exceptions, you should use "using" on disposable resources.

  • Straight to the point. Thanks

  • Nice post (y). Other steps include:
    1- Use httpmodule to remove redundant white spaces
    2- Use not more than 3 javascript files to decrease the number of HTTP requests between the clients and the server
    3- Use CSS sprites (Combine your background images into a single image)
    4- Try to deploy across a CDN
    5- Always make javascript and CSS external
    6- Use E-Tags
    7- Reduce the DOM elements (more divs less tables)

  • Thanks for the tips. I would definitely say that the tips mentioned are quite helpful in improving ASP.NET application development. I will definitely follow them so that my performance will also improve...

Add a Comment

As it will appear on the website

Not displayed

Your website