public static function purge($tags = array(), $createClusterJob = true, $cacheDir = false) {
        $messageBag = array();

        if ($tags instanceof Garp_Model_Db) {
            $tags = self::getTagsFromModel($tags);
        }

        $clearOpcache = !empty($tags['opcache']);
        unset($tags['opcache']);

        $messageBag = self::purgeStaticCache($tags, $cacheDir, $messageBag);
        $messageBag = self::purgeMemcachedCache($tags, $messageBag);

        if ($clearOpcache) {
            $messageBag = self::purgeOpcache($messageBag);
        }

        $ini = Zend_Registry::get('config');
        if ($createClusterJob && $ini->app->clusteredHosting) {
            Garp_Cache_Store_Cluster::createJob($tags);
            $messageBag[] = 'Cluster: created clear cache job for cluster';
        }

        return $messageBag;
    }