gpt4 book ai didi

performance - Magento - 许多相同的缓存请求

转载 作者:行者123 更新时间:2023-12-02 02:13:01 24 4
gpt4 key购买 nike

今天我意识到 Magento 向我的 memcached 服务器发出了很多相同的请求,它请求 key Zend_LocaleC_en_GB_currencynumber_ 。你有谁知道它是在哪里生成的,我该如何改进它?它可能在某种程度上与价格框的呈现有关,但我看不出它在一个页面中出现 50 次的原因。谢谢,Jaro。

编辑:到目前为止,我做了快速修复Zend_Cache_Backend_Memcached::load

public function load($id, $doNotTestCacheValidity = false)
{
if ( isset($GLOBALS[$id]) ) {
return $GLOBALS[$id];
}

$tmp = $this->_memcache->get($id);
if (is_array($tmp) && isset($tmp[0])) {
$GLOBALS[$id] = $tmp[0];
return $tmp[0];
}
return false;
}

这不是很好,但似乎在工作。至少许多对 memcached 服务器的请求消失了。杰罗。

最佳答案

这是 Zend Framework 社区中的已知问题之一。它甚至被报告为 1.0.3 版本的改进 (http://framework.zend.com/issues/browse/ZF-2311)。

您的修复对于 Magento 来说很有意义,因为它执行了大量对 Zend_Currency 的调用,并且与 memcached 的连接存在一些限制或足够慢。

例如,在我们使用 memcached 的大多数项目中,这种调用并没有导致页面加载时间损失太大。

但是您可以在 Magento 中修复它以使用 ZF 进行变通:

  1. 重写模块中的核心/语言环境模型

  2. 覆盖 currency() 方法

    public function currency($currency)
    {
    if (!isset(self::$_currencyCache[$this->getLocaleCode()][$currency])) {
    $currencyObject = parent::currency($currency);
    $currencyObject->setFormat(array(
    'format' => Zend_Locale_Data::getContent($this->getLocale(), 'currencynumber')
    ));
    return $currencyObject;
    }
    return parent::currency($currency);
    }

关于performance - Magento - 许多相同的缓存请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11948284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com