43
Sitecore Performance Tips for Visitor Engagement Tips to Improve Sitecore 6.5/6.6 Performance August 2, 2013 1

Sitecore Performance Tips

Embed Size (px)

DESCRIPTION

Sitecore Performance Tips for Visitor Engagement - Tips to Improve Sitecore 6.5/6.6 Performance for Visitor Engagement

Citation preview

Page 1: Sitecore Performance Tips

Sitecore Performance Tipsfor Visitor Engagement

Tips to Improve Sitecore 6.5/6.6 PerformanceAugust 2, 2013 1

Page 2: Sitecore Performance Tips

Sitecore Enterprise Web CMS

• Popular .NET Web Content Management System for mid-to-large organizations

• Provides friendly tools for non-technical Content Authors and Marketers

• Can be customized and extended to meet almost any conceivable business need

2

Page 3: Sitecore Performance Tips

Why Performance is Important

Faster web sites create a better user experience• Higher performing web sites display more quickly• Google uses page load speed as a metric in rankings • Mobile users may be using sketchy connections• Improving performance reduces bounce rates• Some users leave if a site hasn't loaded in 4 seconds• Users hit back and click the next link in the search results

• Higher performing web sites get better results• Higher visitor engagement• Higher visitor retention• Higher visitor conversion rates 3

Page 4: Sitecore Performance Tips

Sitecore Performance Factors

HardwareResources

Config Settings

Content Hierarchy

Coding Practices

Page Weight

Site Traffic

4

Page 5: Sitecore Performance Tips

Issues that Impact Performance

Resource issues that have a negative impact• The hardware is not adequate or there is a bottleneck• The network bandwidth is not adequate for the load

Configuration issues that have a negative impact• Pages use too many HTTP requests for components • The site is not configured properly for performance

Development issues that have a negative impact• The structure of the web site is non-optimum• Coding issues like using Codebehind instead of CodeFile• Causes frequent recompiles when sublayouts are updated

5

Page 6: Sitecore Performance Tips

Use a High Performance System

Use dedicated servers for Sitecore and for SQL• Use your best hardware for SQL Server• Use servers that provide adequate resources• At least 12GB physical memory• At least 2.2GHz quad core processor

Use a good Windows server OS to host the site• Use an x64 server operating system architecture• Use later operating system versions over earlier ones

6

CMS CDS SQL

Page 7: Sitecore Performance Tips

Set System Settings for Speed

Configure system settings for performance• Set processor scheduling to ‘background services’• Set visual effects to ‘Adjust for best performance’• Set the size of the paging file, not system managed• Configure hyperthreading in BIOS when using a VM• Disable the screen saver• Disable Windows services that are not required• Schedule backups and antivirus scans for off-hours• Set the Power Plan to high performance

7

Page 8: Sitecore Performance Tips

Configure Disks for Performance

Use high speed disks• Use disks with serial interfaces, such as SAS or SATA• Use hardware RAID 1 or RAID 10; avoid RAID 5

Configure disk settings for performance• Do not enable software RAID or dynamic disks• Configure each disk for write caching in Windows• Regularly defragment any fragmented disks

8

RAID

1 RAID 1 RA

ID 1

0RAID

10

RAID

5 RAID 5

Page 9: Sitecore Performance Tips

Configure NICs for Performance

Configure your network for performance• Use 1 GB network cards or faster & matching cabling• One NIC for visitor traffic• Separate NIC on same network for administration• Separate NIC on different network for database traffic

• Use a dedicated private network for IIS <–> DB traffic• Use network cards with hardware data compression

Configure network adapter settings for speed• Set the Link Speed to duplex instead of auto

9

Page 10: Sitecore Performance Tips

Optimize Sitecore for Live Sites

Optimize Sitecore live sites to run efficiently• Tune Sitecore caches so they are sized properly• Optimize Sitecore media for fast loading• Troubleshoot slow running Sitecore pipelines• Update the Search API to the latest supported version

Avoid things that cause Sitecore to run slowly• Do not publish items with validation errors• Do not create huge branches in the content hierarchy• Do not set ‘compilation debug = true’ on live sites• Compilation of aspx and ascx files are not done in batches• Assemblies are compiled for debugging, not performance

10

Page 11: Sitecore Performance Tips

Optimize Sitecore for UI Tools

Optimize Sitecore CMS tools to run efficiently• Perform Sitecore maintenance tasks regularly• Search indexes should be re-indexed• Link database should be rebuilt• Sitecore databases should be cleaned up

• Manage Sitecore items for performance• Ensure items contain less than 100 immediate children• Ensure items don’t have more than 15 numeric versions• Minimize the use of rich text fields & list fields in items

• Manage fields for performance• Use Multiline text fields instead of Rich Text if possible• Don’t use Sitecore query for List fields with many items

11

Page 12: Sitecore Performance Tips

Optimize Layouts for Page Loads

Optimize Sitecore layouts for performance• Place stylesheets in HEAD section of Sitecore layouts• This allows page rendering to be done in order• Combine CSS into one file to reduce requests

• Place JavaScript at the bottom of Sitecore layouts• JavaScript scripts block parallel downloads• Combine JavaScript into one file to reduce requests

• Use Expire Headers so CSS/scripts become cacheable• Use Entity Tags to validate items in the browser cache 12

Page 13: Sitecore Performance Tips

Optimize Code for Performance

JetBrains Resharper• Checks code for errors or if it can be improved• C#, ASP.NET, MVC, JavaScript, HTML, and CSS

• Locates code smells that indicate a deeper problem• Available at http://www.jetbrains.com/resharper/

ANTs Performance Profiler • Profiles ASP.NET Webforms and MVC• Call tree shows performance data for every method• Shows most expensive methods, queries and requests

http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/ 13

Page 14: Sitecore Performance Tips

Fiddler and neXpert Tools

Fiddler• A free web debugging proxy for any browser• Useful for testing web site performance• HTTP Caching• Compression• Bottlenecks

• Available from http://fiddler2.com/

neXpert• Performance analysis plugin for Fiddler from Microsoft• Helps identify common web performance issueshttp://www.microsoft.com/en-us/download/details.aspx?id=11729

14

Page 15: Sitecore Performance Tips

Optimize Site Settings for Speed

Optimize IIS for performance• Use IIS 7.0 or higher• Stop and disable any unused or unneeded sites

Configure IIS site settings for performance• Enable HTTP Keep-Alive so HTTP connection is reused• Compress transfers to speed page load times• Move other services (AD, DNS, FTP) to other servers• Enable both static and dynamic content compression• Configure a content expires header for the site• Set Caching.CacheViewState to false in web.config• ViewState is usually only needed on pages with forms

15

Page 16: Sitecore Performance Tips

Optimize App Pool Settings in IIS

Configure IIS app pool settings for performance• A separate application pool for each web site• Managed pipeline mode set to Integrated• .NET framework set to v4.0• Maximum processes assigned to the pool set as 1• Enable 32-bit applications set to false• Delete System.Data.SQLite.dll from bin folder if error

Avoid changing most advanced app pool defaults

16

Page 17: Sitecore Performance Tips

Optimize SQL Database Settings

Configure SQL server settings for performance• Install SQL Server on a dedicated database server• Use x64 SQL Server 2008 R2 or later• Set Boost SQL Server processor priority to true

Configure database settings for performance• Set concurrent connections to 0 (unlimited) • Schedule SQL Server backups for off hours• Rebuild the SQL Server indexes regularly• Database indexes become fragmented over time• Heavily fragmented indexes can decrease performance

• Create a maintenance plan for databases17

Page 18: Sitecore Performance Tips

Optimize Page Load Times

Optimize page load times on browsers• Reduce # components to make fewer HTTP requests• Combine multiple files/scripts into one file/script

• Minimize the use of redirects and DNS lookups• Avoid query strings in the URL of static resources• Avoid HTTP 404 (Not Found) errors• Use multiple geo-dispersed servers or a CDN• Use percentage and relative measures instead of

pixel• Good measures are em, ex, bolder, larger and thick• Enables browsers to adapt content to fit the display

18

Page 19: Sitecore Performance Tips

Optimize JavaScript for Page Loads

Optimize JavaScript to improve page load times• Use external JavaScript instead of inline JavaScript• Combine JavaScript into one file to reduce requests• Minify JavaScript to remove unnecessary characters • Spaces, tabs and other white space characters • Inline comments

• Identify and remove duplicate JavaScript scripts• Place JavaScript at the bottom of Sitecore layouts• JavaScript scripts block parallel downloads 19

Page 20: Sitecore Performance Tips

Optimize AJAX for Page Loads

Optimize AJAX to improve page load times• Use GET instead of POST when using XMLHttpRequest• GET sends the headers and the data together• POST implements this in two steps instead• You cannot use GET on IE when the URL length > 2 KB

• Make AJAX responses cacheable to optimize them

20

Page 21: Sitecore Performance Tips

Optimize CSS for Page Loads

Optimize CSS to improve page load times• Place stylesheets in HEAD section of Sitecore layouts• Use external CSS files so files are cached by browser• Use @charset to set character encoding • Avoid using @import as it can delay page loads

• Combine CSS into one file to reduce requests• Implement object-oriented CSS to use inheritance• Minify CSS files to remove unnecessary characters • Spaces, tabs and comments 21

Page 22: Sitecore Performance Tips

Avoid CSS Expressions

Using CSS Expressions can degrade performance• Expressions can dynamically set CSS properties• Supported in Internet Explorer Version 5 and later• Frequent evaluations of expressions can occur• When the page is rendered and resized• When the page is scrolled• When the user moves the mouse over the page

22

Page 23: Sitecore Performance Tips

Optimize Images for Page Loads

Optimize image sizes to minimize response times• Use a graphic optimizer to reduce the size of graphics• Radical Image Optimization Tool (RIOT)

• Compress images to transmit images efficiently• Use progressive jpegs to optimize jpeg loading• Resize images on the server instead of on the client• Use an ashx handler to resize images on the server• Download images that are already the right size• Avoid setting HTML image element width and height

23

Page 24: Sitecore Performance Tips

Guidelines for Using Sprites

Use CSS sprites to optimize image load times• Combining images into fewer files can reduce latency• Sprite images that load together on the same page• Sprite GIF and PNG images first as they are lossless • Sprite small images to reduce the requests overhead • Sprite cacheable images• Combine images with the same 256 color palette

• Use spriting services to make it easier to build sprites• Reduce the amount of empty space in sprited images

24

Page 25: Sitecore Performance Tips

Optimize Cookies for Page Loads

Optimize cookies to improve user response time• Keep cookie sizes small to minimize response times• Eliminate unnecessary cookies• Set cookies for a domain so sub-domains are not affected• Create a subdomain and locate static components there• Servers ignore cookies sent with static image requests • These cookies generate unnecessary network traffic• Use cookie-free requests to request static components

• Make the cookie for the server's root small to get favicon• Set an earlier Expires date to remove a cookie sooner 25

Page 26: Sitecore Performance Tips

Optimize Renderings for Page Loads

Review rendering times on page loads• Open the Sitecore Page Editor in Debug Mode• Display a web page that loads slowly• Scroll down until the Sitecore Profile is displayed• Review the Hot Spots – Most Time Taken items• Check for renderings with long times in Own column• Update the renderings that are slowing down the page

26

Page 27: Sitecore Performance Tips

Optimize Pipelines for Performance

Review pipeline durations to identify slow ones• Install the Pipeline Performance Monitor tool• Unzip ParTech-Pipelines-PerformanceMonitor.zip• Copy ParTech.Pipelines.dll to site’s bin folder• Copy PerformanceMonitor.config to App_Config/Include

• Reload web site and click a few links• Review performance.<date>.txt file in /Data/logs • Check httpRequestBegin pipeline times for slow requests• Check renderField pipeline times for slow renderings

• Rename PerformanceMonitor.config to disable ithttp://marketplace.sitecore.net/en/Modules/Pipeline_Performance_Monitor.aspxhttp://www.partechit.nl/nl/blog/2013/03/monitor-the-duration-of-all-pipelines

27

Page 28: Sitecore Performance Tips

Review Sitecore Logs for Issues

Server Issues• Delays between HTTP request and HTTP response• Sitecore is having difficulty processing the response

Network Issues• Long HTTP response times• Network is causing delays when downloading

Other Issues• Check for long delays between individual log entries

28

Page 29: Sitecore Performance Tips

Use Load Testing for Scaling Site

Load Testing helps ensure a system will scale• Anticipates performance with increased traffic loads• Creates simulated server loads expected on live site• A series of test cases are used during the testing• Best to monitor on both the server and client sides

Web Performance allows web-based load testing• Load Tester LITE is provided at no cost• Load Tester PRO can be rented or permanent license• Amazon has rental fees for cloud-based load engines• Available at http://www.webperformance.com/

29

Page 30: Sitecore Performance Tips

Sitecore Shared Source

Pipeline Performance Monitor module• Adds generic processor that logs pipeline durations

Sitecore Stager module• Used to partially clear Sitecore caches on Live sites • Useful in web farm environments with heavy loads

Sitecore TaskManager module• Windows Task Manager and Performance Monitor• A web-based tool to monitor background processes• Indexing and Scheduled Tasks• Publishing

All are available from http://marketplace.sitecore.net

30

Page 31: Sitecore Performance Tips

GTmetrix Performance Tool

GTmetrix analyzes site performance metrics• Uses Google Page Speed and Yahoo! YSlow • Results for each analysis are shown in separate tabs• Uses 10 geo-dispersed servers to simulate latency• No registration required – results displayed in seconds• Available at http://gtmetrix.com/

31

Page 32: Sitecore Performance Tips

PageSpeed Insights Tool

Google Developer’s PageSpeed Insights tool• Analyzes the content of a designated web page • Generates suggestions to make the page faster• Integrated with Google Analytics• PageSpeed Score ranges from 0 to 100 points• A higher score is better• Scores greater than 85 show pages are performing well

https://developers.google.com/speed/pagespeed/insights

32

Page 33: Sitecore Performance Tips

YSlow Page Performance Tool

Browser add-on that analyzes site performance • Uses Yahoo’s rules for high performance web pages• Summarizes the page's components• Displays statistics about the page

• Suggests ways to improve page performance

Supports many popular browsers• Google Chrome• Mozilla Firefox• Opera• Apple Safari

Available at http://developer.yahoo.com/yslow/

33

Page 34: Sitecore Performance Tips

Additional Site Analysis Tools

There are many popular online analysis tools • Pingdom• http://tools.pingdom.com/

• Port 80 Tools• http://www.port80software.com/support/p80tools.asp

• Web Page Test• http://www.webpagetest.org/

34

Page 35: Sitecore Performance Tips

Web Page Performance Test

Site that grades performance factors for a URL • Time to First Byte shows server responsiveness• HTTP Keep-Alive shows if HTTP connection is reused• Compressed Transfers helps speed page load times• Compressed Images help transmit images efficiently• Progressive Jpegs optimizes loading of jpeg images• Cache Static Content optimizes JS and CSS file access• Effective Use of CDN tests Content Delivery Network

35

Page 36: Sitecore Performance Tips

In Summary

Faster web sites create a better user experience• Use dedicated servers for Sitecore and for SQL• Tune Sitecore caches so they are sized properly• Place stylesheets in HEAD section of Sitecore layouts• Use external CSS files so files are cached by browser• Perform Sitecore maintenance tasks regularly• Review pipeline durations to identify slow ones• Optimize Sitecore images so they load faster• Reduce # components to make fewer HTTP requests• GTmetrix combines PageSpeed Insights and YSlow

36

Page 37: Sitecore Performance Tips

Caveat Emptor

There are many ways to manage Sitecore performance• Skilled developers can provide other solutions• Review your performance needs with your Sitecore partner• Review proposed changes with all stakeholders• Implement new configurations on a test system first

This presentation is intended to be academic• To enhance public knowledge of performance issues• To promote better understanding of Sitecore performance

Author cannot guarantee accuracy or fitness for your site• Author makes no representations or warranties• Author disclaims any liability if you act on this information

37

Page 38: Sitecore Performance Tips

More Topics from TICAll Sitecore-related SlideShares from TIChttp://www.slideshare.net/cwnelson/presentations

Creating Web 2.0 Sitecore Siteshttp://www.slideshare.net/cwnelson/interactive-users3

How to Assure Success for a New Sitecore Site (full slide deck)http://www.slideshare.net/cwnelson/creating-new-sitecore-sites-full

Implementing Routine Sitecore Maintenancehttp://www.slideshare.net/cwnelson/sitecore-maintenance-tips

Performance Tips for Sitecore Mobile Usershttp://www.slideshare.net/cwnelson/sitecore-mobile-performance-tips

Sitecore 7 – New Features for Usershttp://www.slideshare.net/cwnelson/sitecore-7-new-features

Troubleshooting Sitecore Performancehttp://www.slideshare.net/cwnelson/troubleshooting-sitecore-performance

38

Page 39: Sitecore Performance Tips

The Inside Corner, Inc.

• The Inside Corner, Inc. (TIC) is owned by Craig Nelson• TIC is a Sitecore partner & web consultancy• A U.S. point of contact for teams of Sitecore specialists • We create new Sitecore sites & enhance existing ones

39

Page 40: Sitecore Performance Tips

Primary Developer - Craig Nelson

• Sitecore Specialist certified for Sitecore 7• 10 years of system administration experience• 10 years as a Microsoft Certified Trainer• 5 years of ASP.NET web development experience• 4 years of Sitecore development experience• 3 years as a Sitecore technical instructor• Sitecore architecture & configuration expert• Performance & SEO optimization specialist• Workflow configuration specialist 40

Page 41: Sitecore Performance Tips

Get Help with your Sitecore Site

Follow TIC on LinkedIn• http://www.linkedin.com/company/the-inside-corner-inc.

Add TIC to your Circles on Google Plus• http://google.com/+Theinsidecorner

Follow TIC on Twitter • https://twitter.com/TheInsideCorner

Contact Craig Directly• Craig Nelson - Certified 7.0 Developer and Sitecore Partner• cwnelson[at]ticdevs.com• Mobile - 707.319.7446

Visit the TIC website• http://ticdevs.com

41

Page 43: Sitecore Performance Tips

Thank you for taking the time to view this presentation on

Sitecore Performance Tips for Visitor Engagement

Please share with others and add a comment if you think it is useful

Thanks!

August 2, 201343