DNN Blog

Jul 19

Posted by: Keivan Beigi
7/19/2010 10:02 AM  RssIcon

 

There is a lot of talk about DotNetNuke’s performance and the general perception in the community is that DotNetNuke 4.9.5 is still the champion. Well... No More!

I joined DotNetNuke Corporation last November and have been spending some of my time optimizing the performance characteristics of the DotNetNuke platform. I made some small tweaks here and there, but no major improvements were realized until I made a breakthrough with our upcoming release, DotNetNuke 5.5.0. I think I have finally hit the target that everyone was hoping for; that is, to have a release that has better performance characteristics than DotNetNuke 4.9.5.

As it turns out DotNetNuke 5.x wasn’t slower because of any of the new features we have added in recent releases. Don’t get me wrong, there have been many major changes and improvements in DotNetNuke 5.x and that is why we would love to see everyone upgrade and take advantage of them. However, none of these new features can be blamed for DotNetNuke 5.x performance. The main reason 5.x didn’t perform as well as its predecessor was because of a rather small configuration change. In DotNetNuke 5.x the “Friendly URL Provider” default mode switched from “Search Engine Friendly” to “Human Friendly”.

If you are not familiar with different type of friendly URLs, here are some examples.

Search Engine Friendly URL Human Friendly Url

http://www.dotnetnuke.com/Products/Overview/tabid/1206/Default.aspx

http://www.dotnetnuke.com/Products/Overview.aspx

http://www.dotnetnuke.com/Community/Teams/tabid/1400/Default.aspx

http://www.dotnetnuke.com/Community/Teams.aspx

 

This was a positive change for DotNetNuke 5.0 from a business perspective as the URLs generated by the platform look a lot nicer in human friendly format and offer SEO benefits. The problem was the original implementation of Human Friendly URLs introduced some extra overhead which caused DotNetNuke to take a performance hit. The overhead was related to the use of Regular Expressions and some non-optimal business logic.

For DotNetNuke 5.5.0, with help from Charles, I went ahead and rewrote how Human Friendly URLs are processed which brings us back to the main topic. DotNetNuke 5.5.0 with Human Friendly URLs enabled is over 20% faster that DotNetNuke 4.9.5, and over TWICE as fast as any previous 5.x release!

You might be wondering why the Friendly URL provider has such a drastic effect on performance. Well, the reason is that Friendly URLs need to be created for every instance of a link on the page. This includes all menu items, all page and module edit links, settings links, RSS and print links; which in totality adds up to a substantial amount of processing for this provider.

Hopefully this change will encourage users and customers to upgrade to DotNetNuke 5.5, so that they can take advantage of these significant optimizations. Please head over to CodePlex and download the latest 5.5 Beta and let us know what you think.

15 comment(s) so far...


Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

Are these changes in the 05.05.00.336 build?

By jsheely on   7/19/2010 11:02 AM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

That is wonderful news! Kudos on these benchmark improvements - you guys got the "right stuff"!

By Daniel Gilleland on   7/19/2010 11:02 AM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

any build after 05.05.00.292 should have the updated code,

By Keivan Beigi on   7/19/2010 11:05 AM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

Nice work Keivan. As someone already on the 5.x codebase, I can't wait to get a 200% performance increase!

By Justin Jovic on   7/19/2010 2:36 PM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

Awesome work - the performance boost is very noticeable.

By Vitaly Kozadayev on   7/19/2010 2:37 PM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

Outstanding news! Does this account for any of the performance problems seen in first page loads too? (Even when an app is loaded in the app pool already.)

By Will Strohl on   7/19/2010 2:37 PM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

re: Will Strohl - unfortunately I don't think this fix has any major effect on that, based on my tests most of the delay is in the container trying to dynamically load the providers. I'll have a look at that area soon to see if there are any improvements that could be made.

By Keivan Beigi on   7/19/2010 2:42 PM
Gravatar

Page Load Speed

There are many things that could be done to increase page load speed. Probably the biggest culprit in DNN is the quantity of CSS and Javascripts loaded by the framework and it's various modules on any given page. Compressing these to be smaller is not the issue. It's the way the browser uses HTTP. It limits itself to 4 requests to any given host at a time. It's not uncommon to see a DNN site require 100 requests to a server to load. Therefore, it *appears* DNN sites are slower than most.

By Lucas Jans on   7/22/2010 1:22 PM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

Keivan, do you know how the re-rewritten provider compares to iFinity URL Master in performance?
I assume, that when you use the provider from iFinity, the native DNN provider is not used, and thus does not affect performance. Right?

By Daniel Kuzikov on   7/22/2010 12:28 PM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

This is great news for the core!

Now, this begs a question that I hadn't gotten a chance to trace down yet myself!, if a site was using a different friendly URL Provider, such as URL Master, would they not have seen this performance issue at all? Since the DNN provider wouldn't be in the pipeline?

By Mitchel Sellers on   7/22/2010 12:28 PM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

Does this mean that if you uncheck Friendly URLs in Host Settings in an old 5.x install it would improve performance or is there more to it? Thanks

By Rodney Joyce on   7/22/2010 12:28 PM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

If a site was not using the built in DNN url provider they would not be affected by this specific issues since the issue was in our built in implementation of friendly url provider.
any dnn site is only bound to the performance of the providers that it is using, it could be URL Provider, Permission Provider, Caching Provider.....

By Keivan Beigi on   7/22/2010 1:22 PM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

Great to hear about performance tuning with DNN 5.x. Keep the performance changes coming!

By Jamie Clayton on   7/22/2010 10:25 PM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

I haven't checked yet beta version but I hope it will support native languages too in menus and links. You know those having strange characters...

Sometimes browser can not found such tabs and there was a need to update them directly in the database.

Thanks for your time

By Jonas Sarunas on   7/22/2010 10:24 PM
Gravatar

Re: DotNetNuke 5.5 Takes The Performance Crown!

it would be a great enhancement for DNN5.5, if the friendly URL provider supports language parameter as well and doesn*'t fall back to SFU.

By Sebastian Leupold on   7/24/2010 11:29 AM
Attend A Webinar
Try An Online Demo
Download DotNetNuke Professional Edition Trial
Have Someone Contact Me

Like Us on Facebook Join our Network on LinkedIn Follow DNN Corporate on Twitter Follow DNN on Twitter

Advertisers

Sponsors

DotNetNuke Corporation

DotNetNuke Corp. is the steward of the DotNetNuke open source project, the most widely adopted Web Content Management Platform for building web sites and web applications on Microsoft .NET. Organizations use DotNetNuke to quickly develop and deploy interactive and dynamic web sites, intranets, extranets and web applications. The DotNetNuke platform is available in a free Community and subscription-based Professional and Enterprise Editions with an Elite Support option. DotNetNuke Corp. also operates Snowcovered.com where users purchase third party apps for the platform.