今天我意识到Magento向我的memcached服务器发出了很多相同的请求,它正在请求密钥 Zend_LocaleC_en_GB_currencynumber _ 。你有谁知道它产生在哪里,我怎样才能改进它?它可能与价格框的渲染有某种关系,但我不明白为什么它在页面中的50次。谢谢,Jaro。
编辑: 到目前为止,我做了快速修复 Zend_Cache_Backend_Memcached ::负载
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服务器消失了。哈罗。
答案 0 :(得分:2)
这是Zend Framework社区中的已知问题之一。它甚至被报道为1.0.3版本的改进(http://framework.zend.com/issues/browse/ZF-2311)。
你修复Magento很有意义,在那里执行了许多对Zend_Currency的调用,并且与memcached的连接有一些限制或足够慢。
例如,在大多数项目中,我们使用memcached,并且在此调用中没有经历过大的页面加载时间损失。
但是你可以在Magento中修复它以使用ZF进行解决方法:
在模块中重写核心/区域设置模型
覆盖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);
}