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
| // BADpublic ActionResult Profile() { return View(); } |
1
2
3
4
5
| // GOODpublic 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