【问题标题】:Single cache frontend and backend单缓存前端和后端
【发布时间】:2014-04-30 20:54:59
【问题描述】:

我想在 Yii 中使用标签缓存。

但事实证明,前端使用其缓存作为后端。当我在后端更改模型时,不会清除缓存的前面。有什么解决办法吗?

对不起我的英语。

【问题讨论】:

    标签: php caching yii redis


    【解决方案1】:

    在各自的配置文件中为前端和后端设置不同的缓存前缀。

    我还在使用 1.1.x 分支,但是对于 2.x 分支应该是一样的。

    前端配置文件:

    'cache' => array(
            'class'     => 'system.caching.' . (!MW_DEBUG ? 'CFileCache' : 'CDummyCache'),
            'keyPrefix' => md5('frontend.' . MW_VERSION . Yii::getPathOfAlias('frontend')),
     ),
    

    后端配置文件:

    'cache' => array(
            'class'     => 'system.caching.' . (!MW_DEBUG ? 'CFileCache' : 'CDummyCache'),
            'keyPrefix' => md5('backend.' . MW_VERSION . Yii::getPathOfAlias('backend')),
        ),
    

    【讨论】:

    • @Twisted1919 我只是想在这里添加一些东西,如果我不提供密钥前缀,是否会导致sqlite缓存数据库的数据库锁定??
    【解决方案2】:

    在我的例子中,在 DI 中缓存服务的运行时,对于 FileCache,设置另一个 cachePath 也可以正常工作。

            //in backend
            $cache = \Yii::$app->cache;
            if ($cache instanceof FileCache) {
                $cache->cachePath = \Yii::getAlias('@frontend/runtime/cache');
                $cache->set('my_cache_prefix', $myData);
            }
            //This way I have overridden expired cache in frontend
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多