6

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.

5
  • FYI I've got Caching.DisableCacheSizeLimits set to true. I'm wondering if I should instead try and set specific cache sizes? Commented 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?
    – Laver
    Commented 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 Commented Oct 3, 2016 at 21:41
  • Do u use Glass? If yes then it could cause performance problem if caching is not turned on. Commented 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. Commented Oct 6, 2016 at 13:26

1 Answer 1

3

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.

1
  • 1
    Unfortunately 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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.