最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > Magento > Magento教程 >

Magento缓存与全局配置文件缓存(2)

时间:2014-06-02 07:38来源:未知 作者:最模板zuimoban 点击:
可以看到,这里初始化了一个core/cache对象。另外,我们可以知道,它会从global/cache中获取配置信息,关于缓存配置的都是在这里设置。 接下看看Mage_Core

可以看到,这里初始化了一个core/cache对象。另外,我们可以知道,它会从global/cache中获取配置信息,关于缓存配置的都是在这里设置。

接下看看Mage_Core_Model_Cache的构造函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public function __construct(array $options = array())
{
        // ../var/cache
    $this->_defaultBackendOptions['cache_dir'] = Mage::getBaseDir('cache');
    /**
     * Initialize id prefix
     */
    // id_prefix
    $this->_idPrefix = isset($options['id_prefix']) ? $options['id_prefix'] : '';
    // id_prefix没有指定,但是设置了prefix,那么 id_prefix = prefix
    if (!$this->_idPrefix && isset($options['prefix'])) {
        $this->_idPrefix = $options['prefix'];
    }
    // 如果_idPrefix还为空,MD5 ../etc目录,然后取前3个字符,然后再加下划线作为_idPrefix
    if (empty($this->_idPrefix)) {
        $this->_idPrefix = substr(md5(Mage::getConfig()->getOptions()->getEtcDir()), 0, 3).'_';
    }
 
    $backend    = $this->_getBackendOptions($options);
    $frontend   = $this->_getFrontendOptions($options);
 
    $this->_frontend = Zend_Cache::factory('Varien_Cache_Core', $backend['type'], $frontend, $backend['options'],
        true, true, true
    );
 
    if (isset($options['request_processors'])) {
        $this->_requestProcessors = $options['request_processors'];
    }
 
    if (isset($options['disallow_save'])) {
        $this->_disallowSave = $options['disallow_save'];
    }
}

最终使用Zend_Cache生成缓存对象。$backend得到的是一个包含两个字段的数组,一个是type,表示存储类型,另一个是options,对应这个存储类型的选项。具体需要继续跟踪进入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
protected function _getBackendOptions(array $cacheOptions)
 {
     $enable2levels = false;
     // 存储类型,默认为 File
     $type   = isset($cacheOptions['backend']) ? $cacheOptions['backend'] : $this->_defaultBackend;
     // 检查是否提供了backend_options
     if (isset($cacheOptions['backend_options']) && is_array($cacheOptions['backend_options'])) {
         $options = $cacheOptions['backend_options'];
     } else {
         $options = array();
     }
 // 根据$type,获取$backendType,如果配置中没有给出backend_options,那么$options就是空的,但是根据不同的类型,还是可能产生其它$option
     $backendType = false;
     switch (strtolower($type)) {
         case 'apc':
             if (extension_loaded('apc') && ini_get('apc.enabled')) {
                 $enable2levels = true;
                 $backendType = 'Apc';
             }
             break;
         case 'database':
             $backendType = 'Varien_Cache_Backend_Database';
             $options = $this->getDbAdapterOptions();
             break;
         default:
             if ($type != $this->_defaultBackend) {
             }
     }
 
     $backendOptions = array('type' => $backendType, 'options' => $options);
     if ($enable2levels) {
         $backendOptions = $this->_getTwoLevelsBackendOptions($backendOptions, $cacheOptions);
     }
     return $backendOptions;
 }
(责任编辑:最模板)
------分隔线----------------------------
栏目列表
推荐内容