Performance Checklist:
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. |
Gathered from: http://msdn.microsoft.com/en-us/library/ms998596