Success of a Sitecore Implementation relies not only on the user acquisition, engagement and retention but also on the efficiency of Authoring Experience. It is the responsibility of the development team to ensure a smooth Authoring Experience for the Content Authors. Here are certain key considerations for improving the performance of Content Authoring,
- Avoid rendering scripts that are not needed for Experience Editor (Eg: GA, GTM, Third Party Scripts etc.). This can be achieved using Rule Based Configuration or the common Experience Editor check.
- Tune Sitecore Caches
- Item Cache
- Data Cache
- Prefetch Cache
Under Load Test the cache size of Sitecore Caches must be 70-80% of allocated but well within RAM capacity
- Tune the options rendered/displayed to Content Authors using Application options – https://doc.sitecore.com/users/90/sitecore-experience-platform/en/the-application-options.html
- Sitecore recommends to store not more than 10 Item Versions for an Item. There are few options to archive/remove old versions that can be utilized,
- Manually archiving and restoring item – https://doc.sitecore.com/users/93/sitecore-experience-platform/en/archive-and-restore-an-item.html
- Leveraging Rules Engine Actions – https://community.sitecore.net/technical_blogs/b/sitecorejohn_blog/posts/rules-engine-actions-to-remove-old-versions-in-the-sitecore-asp-net-cms
- Utilizing Shared Source Modules like Version Pruner, Version Manager etc. (make sure to test them for the version of Sitecore that you are using)
- Remove default languages (Danish/German/English/Japanese) when not being used
- Disable Experience Optimization capability when not being used in the implementation –https://kb.sitecore.net/articles/785358
- Configure appropriate MemoryMonitorHook value – Sitecore has a built-in Memory Monitor, threshold of which is set to 2 GB by default. Whenever this threshold limit exceeds, Sitecore attempts to free some memory by clearing all the Caches (when ClearCaches setting is enabled), reducing Log Entries etc. This will result in slower response times until cache builds up, as the requests will bypass Sitecore Cache.
- Ensure to utilize Sitecore Bucketing when the item count under a specified item is large or expected to grow more in the near future
- Leverage Multiline field instead of RTE wherever RTE experience isn’t needed for Content Authors
- Leverage Multilist with Search Field instead of Multilist, this will ensure to use Search Platform improving performance when Content Author has to traverse through a large number of items for selection.
- Utilize TreelistEx field wherever possible. Ensure to Configure appropriate data source for Treelist field, which will save some time for Content Authors as they need not traverse from root Sitecore node for selecting an item.
- Remove any module/capability that is not being used
- Implement Sitecore Recommendations
- Precompile Views (< Sitecore 8.1 – https://kb.sitecore.net/articles/672774)
- Heavy Use of Clones (> Sitecore 6.4 – https://kb.sitecore.net/articles/850390)
- Slow Performance of My Items (Sitecore 7.2 – 9.1.1 – https://kb.sitecore.net/articles/549951)
- Higher thread usage in .NET 4.7.2 (Sitecore 9.0 – 9.1.1 – https://kb.sitecore.net/articles/327701)
- Ensure to host the Content Management closer to the location of Content Authors
- Scale Horizontally by adding another CM with Load Balancer when there are more concurrent users, when needed. Since Sitecore doesn’t support Out-Proc Session State for Content Management Role, Load Balancer must be configured with Sticky Sessions with Session State being In-Proc. Sitecore Perpetual License model has restrictions on Scaling and Sitecore Support must be contacted.
- Use appropriate Vertical Scaling based on usage of different roles. For instance, Reporting will need to be scaled out to separate server when there is a frequent scheduled data extraction happening to BI/Datawarehouse.
- Configure Sitecore Publishing Service when there are frequent/bulk publishing operations happening to improve Publishing Performance
- Utilize CDNs for js/css, media assets for Content Management if needed, to improve Experience Editor performance
- Ensure to address all the Exceptions by frequently analyzing Logs to improve Server/Sitecore Performance