玩转Drupal7缓存配置技巧

匿名 (未验证), 19 七月, 2012
drupal6有个著名的cacherouter模块,能同时支持db、apc、memcache、file缓存,可以灵活配置各种缓存在不同地方,例如默认在apc、cache_page在file、session在memcache等。 (顺便说说,cacherouter的作者对drupal团队有意见:“我这么好的模块为什么不加入核心?”呵呵) 而在drupal7怎则有三个对应的模块:apc、memcache、filecache,每个模块都有各自帮助文件,笔者偶然发现三个模块的配置方法都差不多,于是把它们综合起来。 方法如下: 1、先下载三个缓存模块在sites/all/modules里面,不用激活模块。 2、在settings.php末尾加上以下配置: //都是数组,次序无关 //首先memcache $conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc'; //缓存的默认指定,即除了特别指定外的所有cache都是用memcache(本例) $conf['cache_default_class'] = 'MemCacheDrupal'; $conf['memcache_servers'] = array( '127.0.0.1:11211' => 'default', ); $conf['memcache_bins'] = array( 'cache' => 'default', 'cache_filter' => 'default', 'cache_menu' => 'default' ); //然后是apc,apc最快,但容量宝贵。 $conf['cache_backends'][] = 'sites/all/modules/apc/drupal_apc_cache.inc'; //drupal的cache和bootstrap,对应数据库里的表,使用apc $conf['cache_class_cache'] = 'DrupalAPCCache'; $conf['cache_class_cache_bootstrap'] = 'DrupalAPCCache'; //最后是文件缓存 $conf['cache_backends'][] = 'sites/all/modules/filecache/filecache.inc'; //文件存放目录 $conf['filecache_directory'] = '/tmp/filecache-' . substr(conf_path(), 6); $conf['filecache_fast_pagecache'] = TRUE; //暂时未用到 //页面缓存,对应数据库里的cache_page使用文件缓存 $conf['cache_class_cache_page'] = 'DrupalFileCache'; //这两句建议加上,页面缓存不用读数据库 $conf['page_cache_without_database'] = TRUE; $conf['page_cache_invoke_hooks'] = FALSE; 本文给出的配置只是例子,根据实际环境进行调配。 各种缓存的效率,最快的是apc,其次是memcache,但如果filecache的目录设定在shm(内存盘),则可能比memcache要快。 apc本身是opcode脚本缓存,缓存数据会占用内存而且产生碎片,一般只存放最常用的数据; memcache通常用于多服务器环境,需要tcp连接,所以速度比apc慢,而且小站一般用不上; filecache最便宜,容量几乎无限,但对于一些磁盘io性能差的空间,未必就能带来好处,

评论