Work with decoupled modules

By default, a Sitefinity CMS installation comes with all modules included. Depending on your use case scenario you might be utilizing only certain Sitefinity modules. In such cases, the recommended approach for Sitefinity CMS projects, running on versions prior to 12.0 is to disable the modules that are not used. This way their precompiled logic remains in the project /bin folder, and gets loaded by the ApplicationPool process, but modules’ initialization logic is not executed every time the Sitefinity application starts.

Sitefinity CMS versions 12.0 and later introduce an advanced mechanism for handling such scenarios, by decoupling the system modules. This way you can selectively install only the necessary modules and optimize your website startup time and ApplicationPool memory consumption.

Installing the all modules package vs. the light package

NOTE: To be able to select between the all modules package and light package you must install Sitefintiy CMS using NuGet packages. For more information see: Install Sitefinity CMS.

If you are not using all Sitefinity CMS modules you might consider installing the light package instead of the full package and then add on top of it the modules you need. Since Sitefinity CMS 12.0, when creating projects via NuGet packages, you have two options:

  • You can install the Telerik.Sitefinity.All package – this package contains the full set of Sitefinity CMS modules
  • You can install the Progress.Sitefinity package – this package contains a light version of Sitefinity CMS with a core set of modules. You can then selectively add the desired modules via the following NuGet packages:
    • Progress.Sitefinity.ABTesting
    • Telerik.Sitefinity.Analytics
    • Telerik.Sitefinity.AuditTrail
    • Telerik.Sitefinity.Dashboard
    • Telerik.Sitefinity.Diagnostics
    • Telerik.Sitefinity.DigitalExperienceCloudConnector
    • Progress.Sitefinity.Ecommerce
    • Progress.Sitefinity.Forums
    • Progress.Sitefinity.MobileFormats
    • Telerik.Sitefinity.Packaging
    • Telerik.Sitefinity.RecycleBin
    • Telerik.Sitefinity.SitemapGenerator
    • Telerik.Sitefinity.SiteSync
    • Progress.Sitefinity.WebSecurity
    • Telerik.Sitefinity.AmazonCloudSearch
    • Telerik.Sitefinity.Amazon
    • Telerik.Sitefinity.Azure
    • Telerik.Sitefinity.Audit.Elasticsearch
    • Telerik.Sitefinity.SharepointConnector
    • Telerik.Sitefinity.MarketoConnector
    • Telerik.Sitefinity.SalesForceConnector
    • Progress.Sitefinity.EloquaConnector
    • Progress.Sitefinity.HubSpotConnector
    • Telerik.Sitefinity.Translations

Performance benefits when running the Progress.Sitefinity package

When you install the light version of Sitefinity CMS, you are loading less modules on startup and this results in improved memory consumption and up to 30% faster startup time. The following table demonstrates the metrics comparison between a blank project running with the full set of modules, and a blank project running with the light version of Sitefinity CMS:

Package name / Metric

Progress.Sitefinity

Progress.Sitefinity.All

Size

393 MB

484 MB

Project setup time

110 sec

138 sec

Startup time

9.6 sec

15.6 sec

DB size (initial schema)

73 MB

73 MB

w3wp memory

(395 – 445) MB

(440 – 512) MB

NOTE: The above metrics are provided for demonstration purposes, to better illustrate the effect of running the light Sitefintiy CMS package. Some of the results may vary depending on your setup and hosting configuration. 

Removing unused modules from existing projects

You can remove unused modules from existing projects, running on Sitefinity CMS versions 12.0 and later. The removal process consists of deactivating and uninstalling the module, and then cleaning up the module reference and assembly files. When you uninstall a module, Sitefinity CMS takes care of removing it from its configuration files. Removing it from the project references and /bin folder ensures the module assembly is no longer loaded by the IIS ApplicationPool, thus decreasing your website memory consumption. To remove an unused module, follow these steps:

  1. From your website administrative backend navigate to Administration » Modules & Services
  2. Using the Actions context menu, delete the module you wish to remove. For more information see Activate and deactivate modules.
  3. If your project is using NuGet packages, remove the package.
  4. If your project is not using NuGet packages, remove the references to the module assembly from your project references. Then delete the module assembly from the project /bin folder.
  5. Build the project

Was this article helpful?