Wednesday, October 21, 2015

Sitecore CMS 7.2 Performance Engineering

Every single improvement counts if we consider performance tuning in sitecore. There are unnecessary logs that generates at runtime which can be assessed and switch off , if it does not solve the purpose.
Ofcourse these are debugging logs but one should ensure if there is custom application logs written for specific purpose.


  1. Crawling.log
  2. Search.log
  3. WebDAV.log
This will reduce I/O read and write operation for certain extend. Just look at this scenario , where there is web farm with many servers and there is requests served by these servers every time and it generates tons of tons of logs which is not necessary at all.

IIS related Settings-Best Practice and Recommendation

  1. Set permissions on /website and /data
  2. Ensure the data and indexes folders are outside of the web root and update the web.config to point to the data folder
  3. In IIS ensure that Maximum Worker Processes for the Application Pool is set to 1 (under advanced settings)
  4. In IIS ensure that Load User Profile settings of the Application Pool is set to "true" (under advanced settings)
  • In IIS ensure anonymous access is denied for:
  •  /App_Config
  •  /sitecore/admin
  •  /sitecore/debug
  •  /sitecore/webservice
  1. In IIS Enable HTTP keep alive
  2. In IIS enable static content compression
  3. In IIS on the CMS server, enable dynamic content compression
  4. In IIS disable execute permissions on the upload folder
  5. In IIS enable content expiration using HTTP response headers, especially for the /sitecore folder (optional)

Sitecore Configuration Changes

  1.  Ensure the /data and /indexes folders are outside of the web root and update the dataFolder setting to point to the data folder.
  2. Include the path to static media files (header images, css files, JavaScript files) in the IgnoreURLPrefixes settings to prevent Sitecore from intercepting the requests.
  3. Disable unused search indexes by setting Indexing.UpdateInterval to 00:00:00.
  4. Update the standard cache sizes for prefetch, data, item and item as recommended (see the scaling guide), and then test for further adjustments.
  5. Ensure presentation components that are candidates for caching are set to cacheable.
  6. For 64-bit systems with the available memory, disable cache size limits using Caching.DisableCacheSizeLimits.
  7. Disable performance counters using Counters.Enabled as they add overhead.
  8. Disable WebDav by removing the references in , , .
  9. Disable memory monitor by removing the hook from .
  10. Restrict access to .XML, .XSLT and .MRT files using the section.
  11. Disable the upload watcher by removing it from the - Sitecore.Resources.Media.UploadWatcher.
  12. Optionally disable client RSS feeds by removing the Sitecore.Shell.Feeds.FeedRequestHandler.
  13. Remove unneeded headers from the responses.  For example X-Aspnet-Version, X-Powered-By, X-AspNetMVC-Version.
  14. If possible check disablebrowsercaching=false , if there is no form data and cookies in your system. This is recommeded for most generic, centric content website.
  15. Diable crawling.log, publishing.log and search.log in delivery boxes.
  16. Remove 404 errors
  17. Remove viewstate if we use traditional .
  18. Disable Webdav if not in use
  19. Use output caching.

Sitecore HTML Caching

1. Caching.DefaultHtmlCacheSize : Determines the default size of the html cache of a site specify the value in bytes or append the value with KB, MB or GB
Default Size=10mb
setting name="Caching.DefaultHtmlCacheSize" value="10MB"

site name="website" ... cacheHtml="true" htmlCacheSize="10MB"
Post a Comment