Sitecore Best Practices

This is my first blog and i would like to start with Best Practices. Here are few Sitecore best practices which are common for any Sitecore implementation.

  • Content Tree
    • Data Template
      • Standard values should be defined for data template created for application.
      • Use inheritance as much as possible. It will help to reduce the repetition of fields or data templates
      • Do not cyclical template inheritance
      • Assign icon to template so it can easily be separated from other templates and usage can be recognized.
      • Organize Templates into folders so that it can easily be identified for their function.
      • Define insert options to manage the options available for CA.
      • Use Token to reduces the amount of text that a content author is required to enter when creating a new item
      • Avoid change in /Sitecore/Templates/System
    • Branch Template
      • Define branches so that a common structure can be created for sites
    • Site Structure
      • Limit the number of items under a single node. Sitecore recommend for 100 items per node
      • Limit the number of versions.
  • Code
    • Optimize Sitecore queries. Make sure that query should not traverse at n level of nodes. It should be restricted at one level.
    • Do not use Fast Queries. Fast query does not use sitecore cache and directly hit SQL server and you may have performance issues on SQL Server.
    • Avoid direct SQL call from code.
    • Use override folder to override sitecore functionality
    • Avoid direct database reference in code
    • Limit use of GetAncestors and/or GetDescendants API calls
    • Minimize the use of the SecurityDisabler
    • Minimize usage of “heavy” queries for Treelist and Multilist fields.
  • Config
    • Use patching to separate custom config vs Sitecore config
    • Use number as prefix to define patch filename. It will help to define the execution order.
    • Enable SwitchMasterToWeb .config on content delivery server
  • IIS
    • Enable dynamic content compression on IIS
  • Analytics
    • Disable analytics if not in use
  • Media
    • Store media in database.
    • Enable drag and drop functionality for media lib
  • Security
    • Apply security to roles rather than users
    • Break inheritance rather than explicitly deny access rights
    • Limit access to the parts of the content tree
    • Limit access to the ribbon items relevant to the user
    • IIS should prevent anonymous users from accessing the following folders:
      •  /App_Config
      • /sitecore/admin
      • /sitecore/debug
      • /sitecore/shell/WebService
    • Restrict upload by
      • Configure IIS to denied “Script” and “Execute” permissions on “upload” folder.
      • Deny permission to users to upload files to the “Temp” folder.
      • Disable upload Watcher
      • Depending on your circumstances, “Upload Filter Tool” should be installed
  • Workflow
    • Configure workflow for content items and authoring process for content
    • Make sure that workflow has final state
    • Publishing restricted to specific roles
  • Publishing
    • Disable full site publishing for authors
    • If you have very large number of items in tree, restrict publishing of complete tree . It may impact performance
  • Cache
    • Prefetch cache : Find the items which should be available on Sitecore startup and configure template IDs of them in prefetch cache
    • Cache size : Evaluate the size defined against the prefetch, data, item and html cache on content authoring and delivery server.
    • Use HTML Cache for better performance at presentation level.
  • Agents : Make sure that only required agents should be enabled on content delivery servers

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s