联系电话:0755-27515592
最新动态:

Magento教程

Magento缓存与全局配置文件缓存

点击数:12612015-07-29 15:57:03 来源: 外贸网站建设,深圳外贸网站建设,深圳网站建设,外贸商城网站制作-亿恩科技

新闻摘要:使用如下例子: 1 先关闭缓存 然后在任何一个控制器中添加一个方法加入如下代码: 1 2 $xml = Mage::getConfig()-getNode()-asXml(); file_put_contents(D:/config_file.xml, $xml); 在我这里,产生的文件大小为684K。

使用如下例子:
1 先关闭缓存
然后在任何一个控制器中添加一个方法加入如下代码:
1
2
$xml = Mage::getConfig()->getNode()->asXml();
file_put_contents('D:/config_file.xml', $xml);

在我这里,产生的文件大小为684K。这是一个非常让我吃惊的数字。如果每个请求都重复这个过程,如果100个同时请求,将吃掉68400K=68.4M内存,注意,这只是针对全局配置, 还没有包含布局系统等。

2 开启缓存
多次刷新刚才那个方法,发现产生的文件只有220K。

问题:为何会如此?比对先后两次产生的文件代码:

从缓存中获取的文件,admin adminhtml install stores crontab websites节点不见了。于是就产生了一个很大的困惑,如果开启了缓存,那么如何获取某个店铺的配置(因为缓存取回的配置没有店铺的设置)?

下面我们运行如下代码:

1
2
$xml = Mage::getConfig()->getNode('stores');
file_put_contents('D:/config_store.xml',$xml->asXml());

发现,它输出:

1
2
3
4
<store>
    <default></defatul>
    <admin></admin>
</store>

刚才消失的store节点这里获取出来了。

看起来,我们必须搞明白缓存对象干了什么事情。

首先进入App的run方法,它首先运行baseInit(),它里面有:

1
2
$cacheInitOptions = is_array($options) && array_key_exists('cache', $options) ? $options['cache'] : array(); //空
$this->_initCache($cacheInitOptions);

注意,这里的$cacheInitOptions是空的。然后调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
protected function _initCache(array $cacheInitOptions = array())
{
    $this->_isCacheLocked = true;
    $options = $this->_config->getNode('global/cache');
    if ($options) {
        $options = $options->asArray();
    } else {
        $options = array();
    }
    $options = array_merge($options, $cacheInitOptions);
    $this->_cache = Mage::getModel('core/cache', $options);
    $this->_isCacheLocked = false;
    return $this;

 

【责任编辑:(Top) 返回页面顶端
贴心
全国7×24小时客服热线
安全
病毒杀除率高于99%
稳定
网站可用性高于99.9%
实力
服务68家上市企业及集团公司
亿恩科技手机站
关注亿恩科技微信

亿恩科技—企业信息化一站式服务专家


Copyright © 2008- 深圳市亿恩科技有限公司版权所有 粤ICP备15056041号

联系我们 | 常见问题 | 在线留言 | 支付方式 | 软件开发 | 我的观点 | 资质荣誉 | 服务流程