Binary Large Objects

The main function of the BlobCache is to cache large objects from the database to the web front-ends and eliminate the need for database round trips thus improving performance. The objects are retrieved from the database once and stored in the local cache. Further requests are served from the cache and trimmed based on security. The configuration includes

  • specify which extensions or objects which you wish to trap like image, sound, video files, code fragments etc.
  • a local folder to drop the cached files on the WFEs
  • an expiration (in seconds)
  • whether to enable it or not. 

Example

<BlobCache location="C:\blobCache" path="\.(gif|jpg|png|css|js)$" maxSize="10" max-age="86400" enabled="false"/>

Now BlobCache also has a secondary function which is to send "better" Http Headers to clients so that they can also cache the files along the way.  Basically what it means is that it will send a "Cache-Control: public, max-age=86400" to the browser and by having it public, it means that anything along the way (proxies etc.) can cache it.  The 86400 is the default value for max-age and it means that the file will expire in 1 day.

Here's something which you can try for BlobCache issues (these are very basic troubleshooting steps)

  • flushing it through the GUI (Site Settings - Site Collection Object Cache - Force flush on this server). Note that if you have multiple zones (i.e. you extend a web application) then each of them has its own BlobCache folder. It also means that the "Force flush" only works for the zone that you are pointing to in the URL. Also if you have multiple web front ends, each server holds its own copy of the the disk based cache.
  • Deleting the files manually on disk, 'C:\BlobCache' (by default) folder.
  • Perform an IISreset.

Detailed information about BlobCache is available here