 <ol> <li><p>Find out where the time is spent</p> <p>add the <a href="http://msdn.microsoft.com/zh-cn/library/system.diagnostics.stopwatch.aspx" rel="nofollow">StopWatch</a> in the method which you said "more that 2 minutes for a button click". you can find which statment spent the most time.</p></li> <li><p>If it is a query on DB that cost time. Check your sql statement.</p> <p>are you using "SELECT Count(*)" instead of "SELECT Count(Id)"? the * is always slower. also, don't try "SELECT * FROM...."</p></li> <li><p>Use cache.</p> <p>there are many ways to do cache. both in ASPX pages and your biz layer. the <a href="http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx" rel="nofollow">OutputCache</a> is the most easy way.</p> <p>and also, cache the page (for example a blog post) on the first time when a user visit it.</p></li> <li><p>Did you use memory paging?</p> <p>be careful when doing paging on gridview or other list. If you just call DataSource=xxx and DataBind(), even with PagedDataSource, this is likely a memory paging. It cost a lot of performance. Please use stored procedures to do paging.</p></li> <li><p>Check your server environment</p> <p>where did you deploy the website? many ISP will limit brandwide and IIS connection count and also CPU time to your account.</p> <p>if you have RD access to your server. you can watch CPU and memory usage to see if they are high when many user comes to your site. If the site is slow and neither CPU nor memory useage is high, it may be a network brandwide problem.</p></li> </ol>