# Cheetah.CacheRegion module

Cache holder classes for Cheetah:

Cache regions are defined using the #cache Cheetah directive. Each cache region can be viewed as a dictionary (keyed by cacheRegionID) handling at least one cache item (the default one). It’s possible to add cacheItems in a region by using the varyBy #cache directive parameter as in the following example:

    #def getArticle
       this is the article content.
    #end def

    #cache varyBy=$getArticleID()
       $getArticle($getArticleID())
    #end cache

The code above will generate a CacheRegion and add new cacheItem for each value of $getArticleID().

class Cheetah.CacheRegion.CacheItem(cacheItemID, cacheStore)

  Bases: `object`

  A CacheItem is a container storing:

  > - cacheID (string)

  > - refreshTime (timestamp or None) : last time the cache was refreshed

  > - data (string) : the content of the cache

  clear()
  getData()
  getExpiryTime()
  getRefreshTime()
  hasExpired()
  renderOutput()

    Can be overridden to implement edge-caching

  setData(data)
  setExpiryTime(time)

class Cheetah.CacheRegion.CacheRegion(regionID, templateCacheIdPrefix='', cacheStore=None)

  Bases: `object`

  A CacheRegion stores some CacheItem instances.

  This implementation stores the data in the memory of the current process. If you need a more advanced data store, create a cacheStore class that works with Cheetah’s CacheStore protocol and provide it as the cacheStore argument to __init__. For example you could use Cheetah.CacheStore.MemcachedCacheStore, a wrapper around the Python memcached API (http://www.danga.com/memcached).

  clear()

    drop all the caches stored in this cache region

  getCacheItem(cacheItemID)

    Lazy access to a cacheItem

    Try to find a cache in the stored caches. If it doesn’t exist, it’s created.

    Returns a CacheItem instance.

  isNew()