Checklist: ASP.NET Performance
Retired Content |
---|
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |
Improving .NET Application Performance and Scalability
J.D. Meier, Srinath Vasireddy, Ashish Babbar, and Alex Mackman
Microsoft Corporation
May 2004
Related Links
Home Page for Improving .NET Application Performance and Scalability
Send feedback to Scale@microsoft.com
This checklist is a companion to Chapter 6, "Improving ASP.NET Performance"
Check | Description |
---|---|
Consider security and performance. | |
Partition your application logically. | |
Evaluate affinity. | |
Reduce round trips. | |
Avoid blocking on long-running tasks. | |
Use caching. | |
Avoid unnecessary exceptions. |
Check | Description |
---|---|
Tune the thread pool by using the formula to reduce contention. | |
Consider minIoThreads and minWorkerThreads for burst load. | |
Do not create threads on a per-request basis. | |
Avoid blocking threads. | |
Avoid asynchronous calls unless you have additional parallel work. |
Check | Description |
---|---|
Pool resources. | |
Explicitly call Close or Dispose on resources you open. | |
Do not cache or block on pooled resources. | |
Know your application allocation pattern. | |
Obtain resources late and release them early. | |
Avoid per-request impersonation. |
Check | Description |
---|---|
Trim your page size. | |
Enable buffering. | |
Use Page.IsPostBack to minimize redundant processing. | |
Partition page content to improve caching efficiency and reduce rendering. | |
Ensure pages are batch compiled. | |
Ensure debug is set to false. | |
Optimize expensive loops. | |
Consider using Server.Transfer instead of Response.Redirect. | |
Use client-side validation. |
Check | Description |
---|---|
Identify the use of view state in your server controls. | |
Use server controls where appropriate. | |
Avoid creating deep hierarchies of controls. |
Check | Description |
---|---|
Avoid using Page.DataBind. | |
Minimize calls to DataBinder.Eval. |
Check | Description |
---|---|
Separate dynamic data from static data in your pages. | |
Configure the memory limit. | |
Cache the right data. | |
Refresh your cache appropriately. | |
Cache the appropriate form of data. | |
Use output caching to cache relatively static pages. | |
Choose the right cache location. | |
Use VaryBy attributes for selective caching. | |
Use kernel caching on Microsoft® Windows Server™ 2003. |
Check | Description |
---|---|
Store simple state on the client where possible. | |
Consider serialization costs. |
Check | Description |
---|---|
Use static properties instead of the Application object to store application state. | |
Use application state to share static, read-only data. | |
Do not store single-threaded apartment (STA) COM objects in application state. |
Check | Description |
---|---|
Prefer basic types to reduce serialization costs. | |
Disable session state if you do not use it. | |
Avoid storing STA COM objects in session state. | |
Use the ReadOnly attribute when you can. |
Check | Description |
---|---|
Disable view state if you do not need it. | |
Minimize the number of objects you store in view state. | |
Determine the size of your view state. |
Check | Description |
---|---|
Avoid long-running and blocking calls in pipeline code. | |
Consider asynchronous events. |
Check | Description |
---|---|
Use Response.Write for formatting output. | |
Use StringBuilder for temporary buffers. | |
Use HtmlTextWriter when building custom controls. |
Check | Description |
---|---|
Implement a Global.asax error handler. | |
Monitor application exceptions. | |
Use try/finally on disposable resources. | |
Write code that avoids exceptions. | |
Set timeouts aggressively. |
Check | Description |
---|---|
Use ASPCOMPAT to call STA COM objects. | |
Avoid storing COM objects in session state or application state. | |
Avoid storing STA components in session state. | |
Do not create STA components in a page constructor. | |
Supplement classic ASP Server.CreateObject with early binding. |
Check | Description |
---|---|
Use paging for large result sets. | |
Use a DataReader for fast and efficient data binding. | |
Prevent users from requesting too much data. | |
Consider caching data. |
Check | Description |
---|---|
Constrain unwanted Web server traffic. | |
Turn off authentication for anonymous access. | |
Validate user input on the client. | |
Avoid per-request impersonation. | |
Avoid caching sensitive data. | |
Segregate secure and non-secure content. | |
Only use Secure Sockets Layer (SSL) for pages that require it. | |
Use absolute URLs for navigation. | |
Consider using SSL hardware to offload SSL processing. | |
Tune SSL timeout to avoid SSL session expiration. |
Check | Description |
---|---|
Avoid unnecessary process hops. | |
Understand the performance implications of a remote middle tier. | |
Short-circuit the HTTP pipeline. | |
Configure the memory limit. | |
Disable tracing and debugging. | |
Ensure content updates do not cause additional assemblies to be loaded. | |
Avoid XCOPY under heavy load. | |
Consider precompiling pages. | |
Consider Web garden configuration. | |
Consider using HTTP compression. | |
Consider using perimeter caching. |
Retired Content |
---|
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |