我想在这里提出我的问题: 根据获得的少量视图,在具有单独后端服务器的安装上刷新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()中设置这些选项的位置。
在以下位置找到了答案: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。