As the SharePoint environment in your Enterprise matures it is time to move from looking at how to build and maintain it, to how to improve it. These improvements can be centered how applications to improve user interaction, to process improvements, to performance improvements.
Today we will focus on a performance improvement and that is using cache to improve response time. Each of these caches that I will list help to improve something, and each have there own particular use
- Blob Cache (RBS) – The usage for this is when you need to remove stress from SQL server, since everytime a user opens a document they will reconnect to the server that holds the blob. Thus relieving stress from the SQL server. This is not a cheap system to setup nor is it simple, take your time to plan and implement this.
- This not actually a cache in the traditional sense, blobs are removed from SQL server and placed on a drive/server. There are considerations for Backup and DR when implementing this.
- Users when they open a file will be redirected to the Drive/Server so it must be able to maintain the connections this should not be on the SQL server or farm servers as that would defeat the purpose when it comes to performance.
- Successful implementations that I have been a part of have used equipment like EMC VNX (http://www.emc.com/storage/vnx/vnx-family.htm) and Metalogix StoragePoint (http://www.metalogix.com/Products/StoragePoint/StoragePoint-BLOB-Offloading.aspx) which can be expensive but will perform well, but you can also use File Server with a SQL server RBS provider for a cheaper solution.
- The data that is stored in the Cache is file types like Word, Text, PDF, and other Office Doc’s. With approx. 10 GB in the YCL farm I don’t think we will get the relieve on SQL that we would hope for.
- Output Cache – The usage of this cache is when you need to improve performance of a page, the cache stores the rendered output of page. This has been extremely successful within Microsoft itself, with a 9x improvement in page response time.
- Stores a copy of the rendered page and is refreshed at an interval in a more traditional manner.
- Is stored in-memory on each WFE. We cache the following items in memory Page Source code , Rendered controls, Queries
- Very controllable from Web Application level, Site Collection level, and Site level we would use profiles to control cached settings (http://msdn.microsoft.com/en-us/library/aa661294.aspx)
- In multi-server farms it is possible to have inconsistent results when pages change. To deal with this keep the reload of cached items lower ie 60 seconds vs 120 seconds.
- Other gotchas for Output caching are
i. Can only be used on Publishing pages.
ii. Use 2 x Size of page + 32kb of memory to store a page.
- Object Cache – This cache will reduce the traffic between the SQL server and the Web Front End by storing SharePoint objects in memory. This enabled by default in SharePoint 2010, but not necessarily tweaked for your farm.
- Stores SharePoint objects like List/Library, Site Settings, and Page Layouts and is refreshed on an interval
- Is stored in-memory on the Web Front End
- Can be set at Web Application and Site level, by default is enabled for Site level
- Can be optimized by changing the size of the cache for the Web Application in the Web.Config.
- Requires Publishing feature for Site to take advantage of Cache
Output Caching and Cache Profiles in SharePoint Server 2010 (ECM)
FAQ: SharePoint 2010 Remote BLOB Storage (RBS)
Configure page output cache settings
CACHING IN SHAREPOINT 2010 BEST PRACTICE
Configure cache settings for a Web application (SharePoint Server 2010)
Custom Caching Overview in SharePoint Server 2010 (ECM)
How to: Extend Caching by Using the VaryByCustom Event Handler in SharePoint Server 2010 (ECM)