One new significant change plus one new cool feature in Sitecore 10.1

1. One new significant change - Improved upgrade from release 10.1

 

Sitecore announced, starting from this release, Sitecore default items are not stored anymore in the databases, which makes the upgrade much easier in the future. From version 10.1, the default items are part of the file system and not changeable directly anymore in the database.

 

This comes with the following benefits:

  • You don't need to install the items which are coming with the new release 
  • You don't need to worry about deprecated default items from an older release
  • You don't need to worry about item conflicts between the old and new release

You may ask yourself then, how to change a default item and how it's persisted then? You may come to situations where you need to do changes on default items, for example:

  • Sitecore Support patch requires a default item change in the core or master database
  • Security settings to control the access for default items, e.g., sitecore/templates

 

Let's dig into it a bit and look at it from the technical aspect

 

As I mentioned earlier, these items are now stored as resources in the file system in the following locations:

  • App_Data\items\core\items.core.dat 
  • App_Data\items\master\items.master.dat 
  • App_Data\items\web\items.web.dat 

These files are in ProtoBuf format, like XML “but smaller, faster and simpler”. Using this format together with Sitecore's implementation ensures that you should not feel any performance defects.


To ensure that you can do any change on the default items, Sitecore introduced the CompositeDataProvider which enables to merge the changes you did on the default items together. Therefore, the field deltas are stored in the Sitecore databases, not the complete items anymore. You can find the related configuration in the Sitecore.config:

 

<dataProviders hint="list:AddDataProvider">
  <dataProvider type="Sitecore.Data.DataProviders.CompositeDataProvider, Sitecore.Kernel">
    <param desc="readOnlyDataProviders" hint="list">
      <protobufItems type="Sitecore.Data.DataProviders.ReadOnly.Protobuf.ProtobufDataProvider, Sitecore.Kernel">
        <filePaths hint="list">
          <filePath>$(dataFolder)/items/$(id)</filePath>
        </filePaths>
      </protobufItems>
    </param>
    <param desc="headProvider">
      <dataProvider ref="dataProviders/main" param1="$(id)">
        <prefetch hint="raw:AddPrefetch">
          <sc.include file="/App_Config/Prefetch/Common.config" />
          <sc.include file="/App_Config/Prefetch/Master.config" />
        </prefetch>
      </dataProvider>
    </param>
  </dataProvider>
</dataProviders>

 

How this change affects the Sitecore upgrade to 10.1?

 

There is a separate section - 3.1.3 Clean up the content databases - in the official Upgrade Guide from Sitecore. This mentions that you need to clean up the upgraded database with a Sitecore tool called Sitecore.UpdateApp. This will leave the manually changed default items in the database; therefore, those items must be reviewed and cleaned manually.

Thanks for the great explanation, Adam Najmanowicz!

 

2. One new cool feature - Partial HTML cache clearing 

 

This feature allows you to achieve cache clearing in a more optimized way than in the previous Sitecore releases. Until this release, using HTML cache clearing behavior, you had two options:

  • Shrink the full HTML cache for a site and rebuild it based on the incoming requests
  • No HTML caching at all

Clearing the full cache on publishing could be a pain point when publishing is triggered many times in a short timeframe. Sitecore introduced this new "Clear On Content Update" option to only clear the content which has been changed as a rendering item caching behavior. This brings a bit more complexity when setting up a rendering item, but it's worth using in most cases. Be careful with changing one rendering's implementation because, depending on the changes, different content dependency specifications should be used.

 

Click here to find more info about Sitecore 10.1 release!