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.
1
2
3
4
5
| // BAD public ActionResult Profile() { return View(); } |
1
2
3
4
5
| // 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. |
Comments
Post a Comment