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".
First of all I want to start out by saying that a lot of the information that is displayed here can be found in previous blog postings. Posts such as DotNetNuke Host Settings Explained, DotNetNuke Scheduler Explained, DotNetNuke Performance Settings Explained, and Simple DotNetNuke Performance Enhancements. Are good starting points for some of the detail behind my recommended changes.
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.
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.
From a DotNetNuke configuration change that is all that I modify. Overall those changes typically result in very noticeableperformance 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.
As a 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.
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.