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
How to Use This Checklist
This checklist is a companion to Chapter 6, "Improving ASP.NET Performance"
Design Considerations
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. |
Threading
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. |
Resource Management
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. |
Pages
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. |
Server Controls
Check | Description |
---|---|
Identify the use of view state in your server controls. | |
Use server controls where appropriate. | |
Avoid creating deep hierarchies of controls. |
Data Binding
Check | Description |
---|---|
Avoid using Page.DataBind. | |
Minimize calls to DataBinder.Eval. |
Caching
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. |
State Management
Check | Description |
---|---|
Store simple state on the client where possible. | |
Consider serialization costs. |
Application State
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. |
Session 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. |
View State
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. |
HTTP Modules
Check | Description |
---|---|
Avoid long-running and blocking calls in pipeline code. | |
Consider asynchronous events. |
String Management
Check | Description |
---|---|
Use Response.Write for formatting output. | |
Use StringBuilder for temporary buffers. | |
Use HtmlTextWriter when building custom controls. |
Exception Management
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. |
COM Interop
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. |
Data Access
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. |
Security Considerations
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. |
Deployment Considerations
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. |