how to improve MVC Application Performance-Tricks



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.

Post a Comment

0 Comments

Close Menu