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.
- Data Template
- 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