Back to all posts

How I Get My DotNetNuke Sites to Run So Fast

Posted on Jan 05, 2009

Posted in category:
Development
DNN

One of the most common questions that I get via the forums on this site, or via e-mail is "How do you get your sites to run so fast". Although not perfect, my sites typically run a bit faster than your average DotNetNuke sites. Previously I have kept the exact specifics of my changes to myself, however, with a little encouragement from the community I have decided to share the full context of the changes that I make to a default DotNetNuke installation to get better baseline performance, as well as extra items that I do to help when I really need that "boost".

Overview

The following changes are simply the configurations that I have found to be the best "baseline" configurations. Consideration is needed in regards to the site setup, update frequency, traffic, hosting environment and users to ensure that you have the proper setup for your specific environment. I will discuss the settings section by section, simply noting the changes that are made. Please reference the specific "Detail" document for more information.

DISCLAIMER: Follow these recommendations as a guide only, I am not responsible for any effects of implementing these changes.

Host -> Host Settings Changes

The first place I visit is the Host Settings page. There are a number of key updates and changes needed in this section. Again, only changes are noted here.

Appearance

In this section, I unchecked the "Show Copyright Credits" box

Advanced -> Authentication Settings

In this section, I unchecked "Enabled" for any provider that will not be used in the portal, typically the LiveId and OpenId providers

Advanced -> Performance Settings

In this section, I change the "Module Caching Method" to Memory. the "Performance Setting" to HeavyCaching. And the "Compression Setting" to GZip Compression.

Advanced -> Other Settings

In this section, I change the "Scheduler Mode" to Timer. I enable the "Event Log Buffer" and I disable the "Auto-Sync File System" option

These are the most common Host Settings changes that I complete. Depending on the site I'll make a few other small edits.

Host -> Scheduler Changes

The biggest change that I make here is to change the "SearchEngineScheduler" task to run typically once every 12/24 hours. This reduces a big load on the server.

Other Changes

From a DotNetNuke configuration change that is all that I modify. Overall those changes typically result in very noticeable performance improvements, but many times it just isn't enough to keep the sites running as smooth as possible. So depending on the situation I have a number of other items that I work with.

Regular Purging of Event Log

As most people that have used DotNetNuke have discovered the EventLog table can become a very troublesome hindrance on the performance side of a site. Enabling the Event Log Buffer helps reduce the effects of a large EventLog, however, the best policy is to clean the EventLog on a regular basis.

I do this one of two ways. On my own sites, I have an SSIS package within SQL Server that truncates the table every 24 hours. On client sites, I utilize my Scheduled SQL Jobs module to keep a 7-day rolling history of the EventLog data. The key here is that we MUST keep the event log small.

Skin Selection and Menu Provider

The next item of consideration is a multi-part consideration. I focus on finding CSS based skin layouts that utilize third party menu components such as Telerik and Css NavMenu. With a simple skin change to sites, I have noticed page load times that have reduced by over 50%.

Finding a good designer that creates well laid-out skins with third party menu providers has been a key performance enhancement, at least in the page. I have NOT benchmarked these numbers though since DNN 4.6.2, so the core menu provider might have better performance.

Compression/Caching Modules

As the last step, if I really need to get the most performance out of a site I will tend to lean towards Snapsis PageBlaster as a good option. I currently use PageBlaster on this site only and have had very good luck with it, although when configuring the module you must be careful to test all functionality first. This was another change that once implemented I noticed very visible performance improvements.

Summary

There you have it, that is my secret trick to improving DotNetNuke site performance! Many people charge a lot of money to make these simple performance tweaks and I just laid them all out on the table for you free of charge. Feel free to share your comments below, if you have questions please visit the forums.