• Edit
  • Delete

Symfony cache in ullright

Warning: do not use the cache with enabled "legacy mobile version". It will mix up desktop and mobile version.

Enabling cache

apps/frontend/config/settings.yml

prod:
  .settings:
    cache:                  true

dev:
  .settings:
    # Set this true for debugging !!!
    cache:                  false

Enable conditional cache filter for ullCms/show

apps/frontend/config/filters.yml

...
i18n:
  class: i18nFilter

conditionalCache:
  class: conditionalCacheFilter
  param:
    pages:
      - { module: ullCms, action: show }

cache:     ~
...

 

Remove all for an action

Sadly sfCache does not support a method to clear all cached variants of an module/action.

Workaround:

// NOTE: if there is no chache manager, make sure cache is enabled in settings.yml!
if ($cacheManager = sfContext::getInstance()->getViewCacheManager())
{
  $cacheDir = $cacheManager->getCache()->getOption('cache_dir');
  $cacheKey = $cacheManager->generateCacheKey('ullCms/show');
  $path = $cacheDir . $cacheKey;
  sfToolkit::clearDirectory($path);
}

 

Dev info:

http://symfony.com/legacy/doc/gentle-introduction/1_4/en/12-Caching

type = sfFileCache

 

File / Function Cache:

    public static function doSomethingCached($param) {
        $cache = new sfFileCache(array('cache_dir' => sfConfig::get('sf_cache_dir').'/function', 'lifetime' => 60*60*24));
        $fc = new sfFunctionCache($cache);
        return $fc->call(
                array('myClass', 'myMethod'),
                array($param));
    }