Yii 1.1: cacheyii

Model Dependent Cache Invalidation
8 followers

Invalidates a cached item when any of the Model dependencies you have specified have been updated since that cached item was created.

Example: if you list Model Post and Model Comment as dependancies for an item to cache then any update to either Post or Comment will invalidate that cache item.

Requirements

Yii 1.1 or above

Installation

  1. git clone git@github.com:evan108108/CacheYii.git
  2. Place CacheYii in your 'protected/extensions' directory
  3. In your protected/config/main.php
'import'=>array(
    ...
    'ext.CacheYii.*',
),
  1. Add this behavor to any model you intend to use as a cache dependency
function behaviors() {
    'updateCacheMapBehavior' => array(
        'class'=>'ext.CacheYii.EUpdateCacheMapBehavior',
        'cacheExp'=>0, //This is optional and the default is 0 (0 means never expire)
        'modelName'=>__CLASS__, //This is optional as it will assume current model
    ),
}

Usage

$model = EDCache::get("YOUR_UNIQUE_ID_HERE", array("Post", "Comments"));
if($model===false)
{
   $model = Post::model()->with('comments')->findAll();
   EDCache::set("YOUR_UNIQUE_ID_HERE", $model, 3600);
}
Get And Set (GAS)
$models = EDCache::gas("YOUR_UNIQUE_ID_HERE", array("Post", "Comments"), 3600, function() use ($model) {
    return $model->findAll();
});
Delete
EDCache::delete("YOUR_UNIQUE_ID_HERE");

Documentation

EDCache::get(YOUR_UNIQUE_ID, ARRAY_OF_MODEL_DEPENDENCIES);
EDCache::set(YOUR_UNIQUE_ID, DATA_TO_BE_CACHED, CACHE_EXPIRATION_IN_SECONDS);

Resources

CacheYii on GitHub

Be the first person to leave a comment

Please to leave your comment.

Create extension