Wednesday, 9 September 2015

Speed Up Your Sitecore Experience Editor Ribbon

This post is inspired from Sitecore Documentation article Improve the performance of the Experience Editor ribbon.

I will try to elaborate the same stuff by including step by step configuration and test case.

For any website, one of the crucial things is to improve it's performance. And one of the ways to gain the performance is to implement caching. So far as Sitecore is concern, we usually focus on live website by caching JS and CSS using different approach such as bundling and minification.

But what about Page Editor or Experience Editor performance? Experience Editor loads few extra Sitecore resources in order to render ribbon. So it would be really helpful if there is a way to cache this Sitecore Ribbon. In-fact, there is a way to accomplish this - and this blog post is all about that!

So let's see how to cache Sitecore Experience Editor Ribbon to improve site performance.

Steps:
1) Open [Sitecore Instance]\Website\sitecore\shell\client\Speak\Layouts\Layouts\Speak-Layout.cshtml

2) Add below string to the <HTML> tag.
 manifest="/sitecore/shell/client/Sitecore/ExperienceEditor/Html5AppCache.ashx"

So it would look like this:


That's it, you are done!

But you may have question - How can I confirm whether it's working? How can I check whether it's really caching Sitecore Experience Editor Ribbon?

You can confirm it by looking into Application Cache as shown in below figures.

Before ribbon caching:



After ribbon caching:



Hope this will give a smile to your Experience Editor user :) !!!

Special thanks to Martina who assisted me on this.

2 comments:

  1. Good stuff. I put this into place in a Sitecore 8.1 Update 1 environment, and I noticed a load-time difference for sure. It looks like it might be good for other stuff too, as I noticed the cache manifest run when I first logged into the main control panel, then again when I hit Experience Editor; going back to both had the results cached as expected.

    I did run into one problem, there is a reference to sitecore\shell\client\Speak\Assets\lib\core\1.2\deps\require.js in the manifest, but in my version of Sitecore, that file doesn't exist there. Only 1.1 and 2.0 folders are present. I did copy my 2.0 folder over with just the deps\require.js file in it, and that took care of the error (it's a console error, but it kept the manifest from building and caching). I've registered this with Sitecore Support, but meantime I can keep one extra file around to gain the benefit. Older versions of Sitecore might not have this issue, of course.

    ReplyDelete
  2. Sitecore's registered this as a bug with reference 84371, so we can track when it's fixed. Cheers!

    ReplyDelete