小编典典

magento如何提出缓存键名称?

redis

我想在这里提出我的问题: 根据获得的少量视图,在具有单独后端服务器的安装上刷新Magento Redis
Cache的问题有点过于具体,因此我要提出一个更简单,更通用的问题。

我的问题的详细信息在链接的问题中。但是要点是,如果我尝试从管理区域刷新缓存或刷新magento缓存,它将尝试清除看起来不存在的“zc:ti:403_FPC”之类的内容。相反,它们被命名为“zc:ti:109_FPC”等。存在一些403键,但还有更多109键。

我的怀疑是该问题是由管理员在单独的服务器和不同的子域(admin.example.com)上引起的。因为当应用程序服务器创建并清除键时,它们似乎将其命名为109,而管理服务器则创建了403键。也许有多个应用服务器的问题。或使用redis。

由于我真正的问题太具体了,如果有人告诉我保存名称时如何命名以及检索名称时使用什么名称,这将是一个好的开始。谢谢。

编辑:我真的很快测试了一些东西。似乎使用管理员刷新缓存调用

Mage::app()->getCacheInstance()->clean() etc.

getCacheInstance()看起来像:

/**
* Get core cache model
*
* @return Mage_Core_Model_Cache
*/
public function getCacheInstance()
  {
      if (!$this->_cache) {
          $this->_initCache();
      }
      return $this->_cache;
  }

我试过一次

Mage::app()->getCache()->clean()

它似乎起作用了!我需要再戳一点以确保。getCache看起来像这样:

/**
       * Retrieve cache object
       *
       * @return Zend_Cache_Core
       */
      public function getCache()
      {
          if (!$this->_cache) {
              $this->_initCache();
          }
          return $this->_cache->getFrontend();
      }

有什么理由为什么会使用getCacheInstance而不是getCache来刷新缓存?有什么理由为什么只会影响我而不影响其他所有人?

再次编辑:

之所以起作用,是因为它发送了flushdb命令。

再次编辑:

我一直在闲逛,在Zend / Cache / Core.php中遇到了一些有趣的东西。我找到了一个名为“
cache_id_prefix”的选项。听起来很有希望。当我在管理服务器上运行以下命令时:

<?php 
require_once('/var/www/html/app/Mage.php');
$cip = Mage::app()->getCache()->getOption('cache_id_prefix');
echo $cip;
?>

我得到了“ 403_”-正是我期望的值。我在应用服务器上进行了尝试,并获得了“ 109_”。现在,我只需要找到在setOption()中设置这些选项的位置。


阅读 293

收藏
2020-06-20

共1个答案

小编典典

在以下位置找到了答案:http : //blog.nexcess.net/2011/05/21/clearing-the-cache-in-
magento/

如您所见,缓存文件名有一个独特的模式。Magento对Zend Cache的实现在所有文件前都加上“
mage”前缀,然后是id前缀(技术上:从您的app / etc /目录路径的md5哈希值开始的前3个字符)…

这很可能是我的答案。我的管理服务器的文档根目录位于默认的/ var / www / html。应用程序服务器位于弹性beantalk上,其根源为/ var/ app / current。

2020-06-20