
In this post we will cover a few tips and tricks to improve ASP.NET MVC Application Performance.
Run in Release mode
Make sure
your production application always runs in release mode in the web.config
1
|
<compilation
debug="false"></compilation> |
or change
this in the machine.config on the production servers
1
2
3
4
5
|
<configuration> <system.web> <deployment
retail="true"></deployment> </system.web> </configuration> |
Only use the View Engines that you require
1
2
3
4
5
|
protected
void
Application_Start()
{
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new
RazorViewEngine());
} |
Use the
CachedDataAnnotationsModelMetadataProvider
1
|
ModelMetadataProviders.Current
= new CachedDataAnnotationsModelMetadataProvider(); |
Avoid passing null models to views
Because a
NullReferenceException will be thrown when the expression gets evaluated, which
.NET then has to handle gracefully.
// BAD
public ActionResult Profile()
{
return View();
}
// GOOD
public ActionResult Profile()
{
return View(new Profile());
}
Use OutputCacheAttribute when appropriate
For
content that does not change often, use the OutputCacheAttribute to save
unnecessary and action executions.
1
2
3
4
5
|
[OutputCache(VaryByParam
= "none", Duration = 3600)] public
ActionResult
Categories() {
return
View(new
Categories());
} |
Use HTTP Compression
1
2
3
|
<system.webserver>
<urlcompression
dodynamiccompression="true"
dostaticcompression="true"
dynamiccompressionbeforecache="true"></urlcompression> </system.webserver> |
Remove unused HTTP Modules
If you run into any problems after removing
them, try adding them back in.
1
2
3
4
5
6
|
<httpmodules> <remove
name="WindowsAuthentication"></remove> <remove
name="PassportAuthentication"></remove> <remove
name="Profile"></remove> <remove
name="AnonymousIdentification"></remove> </httpmodules> |
Flush your HTML as soon as it is generated
1
|
<pages
buffer="true"
enableviewstate="false"></pages> |
Turn off Tracing
1
2
3
4
5
|
<configuration> <system.web> <trace
enabled="false"></trace> </system.web> </configuration> |
Remove HTTP Headers
This is
more of a security thing
1
2
3
|
<system.web> <httpruntime
enableversionheader="false"></httpruntime> </system.web> |
1
2
3
4
5
|
<httpprotocol> <customheaders> <remove
name="X-Powered-By"></remove> </customheaders> </httpprotocol> |
Uninstall the URL Rewrite module if not
required
This saves
CPU cycles used to check the server variable for each request.
1
|
Go
to "Add or Remove Programs" and find "Microsoft URL Rewrite
Module" and select uninstall. |
0 Comments