当前位置: 首页 > 面试题库 >

magento如何提出缓存键名称?

仲孙鸿畴
2023-03-14
问题内容

我想在这里提出我的问题: 根据获得的少量视图,在具有单独后端服务器的安装上刷新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。



 类似资料:
  • 我一直在研究Redis(完全没有经验,只是研究了理论),在做了一些研究之后,发现它也被用作缓存。例如StackOverfolow it self。 有什么好处吗? 我试图直接浏览这个答案redis-cache-vs-using-memory-,但我想我没有得到答案中的关键行: “基本上,如果您需要您的应用程序在共享相同数据的几个节点上进行扩展,那么将需要类似Redis(或任何其他远程键/值存储)的

  • 我们在Magento有个奇怪的问题。 2)我只能在PHP日志上看到一个错误(但我不确定它是否与此有关): [23-jan-2013 06:54:28]PHP致命错误:在/home/**************/lib/zend/cache/backend/file中超过了30秒的最大执行时间。PHP在第655行 [23-jan-2013 09:23:08]PHP致命错误:在/home/******

  • 我有一个接受作为参数的方法。当用户请求 page = 0 和 size = 20 等时,我想将这些传递的值作为。 我做的是 它给出了轴测: EL1008E:在类型为“org.springframework.data.domain.PageRequest”的对象上找不到属性或字段“number” - 也许不是公共的? 我怎样才能使缓存成为它的关键?

  • 有人能详细说明一下使用领域吗。确实需要两者都实现两者。?

  • 我有一个关于内存系统遵循的策略的基本问题。 考虑一个具有私有L1和L2缓存的核心。在L2缓存之后,我们有一个相干流量运行的总线。现在,如果从L2高速缓存中逐出地址(X)的高速缓存行,是否有必要从L1高速缓存中逐出该地址?? 逐出的原因可能是它有助于保持一致性协议的不变[如果l2中的一行显示无效,则此核心不包含此地址]。

  • 我正在使用iTextSharp 5.5.10来生成签名PDF。特别是,我需要LTV签名。LTV可以通过CRL和OCSP请求来完成。 我设法用这种代码缓存CRL(它依赖于C#MemoryCache): 但是,我找不到任何缓存OCSP响应的解决方案。有人有线索吗?