Matt Rutledge is Chief Technology Officer at Believe Group, where he and his team architect, design and develop systems to operate fundraisers. Recently, Rutledge and team performed a comprehensive performance optimization of their DNN website that resulted in a 39% increase in revenue.
In this presentation, Rutledge outlines how he uncovered bottlenecks, diagnosed trouble areas and optimized CMS settings to improve the performance of his e-commerce website. Among the areas Rutledge covers:
CMS settings
Profiling database queries
Optimizing images
Optimizing JavaScript and CSS
Useful and free performance tools
2. OVERVIEW
• Who We Are
• Problem
• Discovering What was Happening
• Solutions
• CMS Settings
• Database Calls
• Image Sizes
• JavaScript and CSS Sizes
• Render Blocking JavaScript
• Results
3. WHO WE ARE
• Started in 1998
• Fundraising for schools and groups
• Catalog
• Chocolate
• Jelly Belly
• Candles
• Offer online shopping for each
individual fundraiser
4. PROBLEM
• 260,000 UniqueVisitors between August and
November
• Site Sluggish when 60 Concurrent Users
• Average Page Load of 6+ seconds
• People Expect less than 4 seconds
8. SOLUTIONS
CMS SETTINGS
• Host->Basic Settings->Show Copyright
• Uncheck this box
• DNN 9
• UPDATE {databaseOwner}[{objectQualifier}HostSettings]
SET SettingValue = ’N' WHERE SettingName = 'Copyright'
• Host->Advanced->Smtp Settings
• DNN 9 = Settings->Servers->Server Settings->Smtp Settings
• Make sure you specify a SMTP Server
• Host->Advanced->Performance Settings
• DNN 9 = Settings->Servers->Server Settings->Performance Settings
• Module Cache -> Memory
• Cache Settings -> Heavy
• Authenticated Cacheability -> Public
9. SOLUTIONS
CMS SETTINGS
• Host->Advanced->CDN
• DNN 9 = Settings->Servers->Server Settings->Performance Settings
• Enable MS Ajax CDN
• EnableTelerik CDN
• Use JavaScript libraries CDN
• Host->Advanced->Client Resource Management
• DNN 9 = Settings->Servers->Server Settings->Performance Settings
• If Possible Enable Composite Files and Minify CSS / JS
• Must use DNNs Register ScriptTag for this to work!
10. SOLUTIONS
CMS SETTINGS
• Host->Advanced->Other Settings
• Enable the Event Log Buffer
• UPDATE {databaseOwner}[{objectQualifier}HostSettings]
SET SettingValue = ‘Y’WHERE SettingName = ‘EventLogBuffer’
• Disable the Auto-sync File System
• Disable the Module Online Help
• Remove any unused extensions
• Adjust schedules as needed
• EVOQ < 8.3 - Disable schedules for Analytics and comment out the following 2 lines in dnn.analytics.Injected.js
• $.ajax(baseServicePath + ‘LogEventData’, options)
• $.ajax(baseServicePath + ‘LogPageView’, options)
11. SOLUTIONS
DATABASE CALLS
• Find long running database calls
• Concentrate on the top 5
• Improve database indexes
• On Azure turn on Auto Index
• https://www.brentozar.com/blitzindex/
• Use cacheing (Redis, etc.) where possible
Tools Used: Glimpse and Azure Database MonitoringTools
13. SOLUTIONS
JAVASCRIPT AND CSS
• Minify your JavaScript Files
• Minify your CSS Files
• You can use the Client Resource Manager but every script must be registered using the
ScriptManager for this to work.
• <dnn:DnnJsInclude runat="server" FilePath="DNNMega/jquery.dnnmega.debug.js" PathNameAlias="SkinPath" />
• <dnn:DnnCssInclude runat="server" FilePath="DNNMega/dnnmega.css" PathNameAlias="SkinPath" />
• Tools
• Grunt.js
• https://github.com/mtrutledge/DnnJSMinify
• http://www.dnnsoftware.com/wiki/client-resource-management-api
14. SOLUTIONS
RENDER BLOCKING JAVASCRIPT
• 3 Ways to Handle
• Use inline JavaScript
• Declaring a Script as Asynchronous
• Deferring a Script
• Async
• <script async src=“/js/app.js”></script>
• Browser starts download and executes as soon as download is finished with no regard to the order of the script tags
• Defer
• <script defer src=“/js/app.js”></script>
• Browser starts download, but holds off executing the script until the HTML has been completely parsed and the DOM
tree has been constructed.