One of the major challenges most web development projects face is meeting the expectations of the client regarding on-page load times. Both on web as well as mobile, pages are expected to load fast. Sitecore is no exception.
In this blog post, we will be talking about performance on Sitecore content delivery servers (CD), from which content is delivered. If your Sitecore website is performing very slowly, the toughest task is identifying the root cause.
Firstly, collate all the statistics during the slow responsive times
At what time of day is the site running slowly?
How many visitors are browsing the website at that time?
Is the CPU and RAM of content delivery server spiking at that particular time?
What actions were users doing at that time?
Is database peaking during that time?
What can you infer from logs at that time?
Capture the statistics on web developer tools on which resources were taking more time to load.
Once you have the answers to these investigations, you can narrow down on the potential cause of the issue.
To help you, let’s look at some of the common scenarios:
Review all the caching configurations. Tricky one is deciding upon size of prefetch case - Excessive use of prefetch caches can affect the time required for application initialization. There is a trade-off here, so always take a decision that is best suited in your scenario. Depending upon the server size, set the sizes of your cache according the website needs.
2. Media files size
Consider optimizing images, minify the CSS and JS if you observe it’s taking a lot of time to deliver these resources. You can get this information very easily from web developer tools on browser. Review all the cache settings related to media library. Using CDN (content delivery network) provider is also a very good option, if there is too much load on the server to deliver the media files.
Depending upon the size of the website, size of indexes (SOLR/Azure Search) increase thus reducing the performance of the website. Make sure the correct indexing strategies are used and code should follow the best practises in order to retrieve the content.
Create separate indexes based on website needs, if there is a requirement in code to retrieve data from a specific place in the content tree.
Make use of Sitecore content search API in code for retrieving the contents from Indexes. Never make direct API calls to the database. Code should always retrieve data from Indexes.
4. Turn off EXM
If it isn’t used, especially for Sitecore 9, you should disable the EXM from the configuration file. As EXM is embedded into Sitecore XP from version 9, there is a need to manually turn it off if you are not using it. This will help improve the performance.
5. Infrastructure review
Review the architecture to investigate if there is a need to put an additional content delivery server or even increasing the size of machine (cores/CPU/RAM). If you see the performance is degraded only when visitors increase on website, there might be a general case for looking at a change of infrastructure. But this is last thing you want as there is a cost involved in doing this, and this should be considered only after all other potential issues have been explored.
6. Network latency
If there is a very high network latency, consider moving your servers closer to the region where visitors are browsing from. If traffic from North America is very high, setup a content deliver server closest to that region, reducing the network latency.
To get more detailed insights, get in touch with us. As Sitecore partners, we are experienced in dealing with these scenarios. To do this, we use the best tools, know how to read logs, and deep dive the code in order to successfully deal with these issues.