Install YSlow plugin for Chrome Developers
Cache-Control* IIS: Use authentication and SSL only if necessary
* PHP: Use FastCGI and not CGI
* PHP: Enable Wincache
* PHP: Set FastCGI MaxInstances to 0
* ASP.NET: turn of debug=“true” in web.config
ASP.NET: Read through the ASP.NET Performance Coding Architecture Guides
* ASP.NET: Read about the Large Object Heap
* ASP.Net: Use ASPNET_COMPILER to optimize for the first impression
ASPNET_COMPILER at the end of an install of an ASP.NET application. ASPNET_COMPILER does a batch compile of all ASP.NET files and resources. ASPNET_COMPILER here.aspx).* ASP.NET: Review IIS idle timeout and proactive recycling settings
* ASP.NET: review Thread Pool settings
maxConcurrentRequestsPerCPU setting. It's set to 12 by default, i.e. not more than 12 concurrent requests per CPU will be executed. Usually this setting works well. * Use Content Distribution Networks
* Use compression
* Minify Javascript and CSS
* Use Doloto for splitting the initial Javascript payload
* Do not scale images in HTML
* Optimize Images
* ASP.NET: Disable ViewState
* Use the Cache-Control header to help the browser cache
Cache-Control header via the UI. appcmd set config "Default Web Site/scripts"
/section:staticContent
/clientCache.cacheControlMode:UseMaxAge
/clientCache.cacheControlMaxAge:"365.00:00:00"* In ASP.NET you can do it [programatically](http://quickstarts.asp.net/QuickStartv20/aspnet/doc/caching/output.aspx) via the Response.Cache object or you can do it declaratively via the [OutputCache Location="Client"](http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx) directive.
* Avoid Redirects.
* A redirect introduces another network round-trip. Avoid it. * Best described [here](http://developer.yahoo.com/performance/rules.html) or in Steve Souders [first book](http://www.stevesouders.com/hpws).
* Combine Javascript and CSS
* Same as row above.
* Strip unnecessary response headers
* They are sent out in every request. * In IIS it's easy to remove the X-Powered-By header via the UI. * The ETag header is not as easy unfortunately. "[Ultra-Fast ASP.NET](http://www.amazon.com/Ultra-Fast-ASP-NET-Build-Ultra-Scalable-Server/dp/1430223839)" has an example how to remove the ETag in managed code.
* Network: Reduce DNS Lookups
* DNS lookups introduce network roundtrips because the name has to be resolved and for that the browser needs to talk to a DNS server. * Sometimes it's a good idea to use another one or two DNS names however. For static content for example. Static content doesn't need all the other stuff you might need for dynamic content, e.g. cookies. Steve Souders has a whole chapter about this topic.
* Use authentication/SSL only when necessary
* Review Cookies and their sizes
* ASP.NET: Keep Master Pages lean
* Careful with ETags on IIS 6.0
* Use lowercase to reference your resources
* Another issue: resources compress better if lowercase is used. Why? Because most letters are lowercase. Using a smaller set of characters will produce more dictionary matches and compression is more effective. I read this is in “Ultra-Fast ASP.NET”. Need to try this though!
#### References #### * http://bit.ly/wQCdr7 * 12titans.net * Ultra-Fast-ASP-NET