Standard out of the box Sitecore has prefetch cache settings to read in templates, template sections and template fields. What is the purpose of this, given that the actual items based on the templates aren't fetched by default?
From the Sitecore Cache Configuration Reference you find the following:
Database prefetch caches contain items that Sitecore accesses during and immediately after initialization, and items with children that Sitecore often accesses as a group.
In general, the default cache settings are too generic to apply to any real production deployment.
When RAM is plentiful on a 64-bit machine, you may find your self skipping the configuration of the prefetch and disabling the cache size limit altogether.
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> <sitecore> <settings> <setting name="Caching.DisableCacheSizeLimits" value="true"/> </settings> </sitecore> </configuration>
I would imagine however that when hosting on Azure you may desire to keep the limit and tune the various caches available. Mark Ursino has a good response on Stack Overflow where he discusses tuning the prefetch cache.
Here's an excerpt from his answer:
I recommend you prefetch anything that you need for the home page, e.g. the home item and its immediate children (likely for a main nav). Also, if there are other data items that are used on the home page and you know they are always used there, you can prefetch them too. I would start with the basics and slowly add to it and see how it affects performance and app restarts.
Some time back Tim Ward presented on a webinar about caching in Sitecore. Download the Sitecore Caching Technical Deep Dive if you would like to know about all the forms of caching available in Sitecore, or at least around version 6.x.