Does anyone have any ideas why Experience Editor would take 5-6 seconds to display a component I add when running on development or staging servers vs less than 2 seconds when running Sitecore and the DBs locally? I know there is likely some latency between the CD and DB servers but this seems like a ridiculous difference. Especially since the servers are much higher spec than my machine. I've done all I can to optomise my code and what is loaded in Experience editor so am pretty stumped.
-
FYI I've got Caching.DisableCacheSizeLimits set to true. I'm wondering if I should instead try and set specific cache sizes?– Adam SeabridgeCommented Oct 3, 2016 at 20:56
-
While network latency may sound minimal, if there are a lot of round-trips to the DB to update the Experience Editor then they could quickly add up. Is it this slow for every component addition, or only the first few? Perhaps you'd benefit from adding more to the prefetch caches?– LaverCommented Oct 3, 2016 at 21:33
-
It's slow for most components I've tested this on but I could do some more testing to see if this improves over the 5th, 6th, 7th component etc. Would I best best adding all my rendering templates to the prefetch cache? this article looks like a nice solution to build this dynamically: blog.boro2g.co.uk/sitecore-prefetch-cache– Adam SeabridgeCommented Oct 3, 2016 at 21:41
-
Do u use Glass? If yes then it could cause performance problem if caching is not turned on.– Tamás TárnokCommented Oct 5, 2016 at 20:26
-
TRNKTMS - yes we use Glass but apparently Glass doesn't enable caching when using Experience Editor or Preview Mode. So this could be the cause of the issue. I think I need to look at what other layers of caching are/are not working.– Adam SeabridgeCommented Oct 6, 2016 at 13:26
1 Answer
If it's slow for only the first insertion of a specific component, but subsequent insertions of the same component are relatively fast, then you may benefit from tuning the prefetch cache.
Here's what the Sitecore manual states (source - Sitecore 6.6 manual):
The following sample demonstrates the XML structure for configuring prefetch caches.
<configuration> <cacheSize>20MB</cacheSize> <childLimit>100</childLimit> <template desc="reference">{EF295CD8-19D4-4E02-9438-94C926EF5284}</template> <item desc="home">{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}</item> <children desc="field types">{76E6D8C7-1F93-4712-872B-DA3C96B808F2}</children> </configuration>
The
<cacheSize>
element controls the maximum size of the prefetch cache. The<childLimit>
element defines a limit to the number of children to represent in the prefetch cache. If an item has more than this number of children, Sitecore does not cache information about the children of that item in the prefetch cache. The<configuration>
element can contain any number of<item>
,<template>
, and<children>
elements. For elements, Sitecore loads the specified item into the prefetch cache. For elements, Sitecore loads all of the items based on the specified data template into the prefetch cache. For<children>
elements, Sitecore loads all of the children of the specified item into the prefetch cache.
So you'd probably be able to use the <children>
element to include any essential content branches and all their children.
-
1Unfortunately the speed doesn't seem to improve over time so I'm not sure how much I'll benefit from pre-fetch caches. It seems to take pretty much the same amount of time regardless of me adding the same component to the page each time with the same content. Around 7 seconds. which seems very slow indeed. I just don't understand how the same code running on the servers is 5 seconds slower than running it locally with a db hosted on an internal server. Commented Oct 4, 2016 at 10:06