很久前用MediaWiki的使用就听说过Memcache来加速网站,后来用Drupal看一些优化措施中也说到Memcache,但一直没有时间精力去尝试。
前些天把PHP代码缓存的APC模块安装后,看统计数据,PHP程序代码的命中率几乎达到100%,服务器负下降还是比较明显的。就干脆一鼓作气,我和同事配合把Memcache也安装测试。
APC的安装至需要与服务器的PHP环境、模块设置有关,与Drupal程序没有特别的关系,但Memcache除了服务器环境安装以外,还需要对Drupal系统加装模块来利用Memcache,下面就记录一下服务器安装Memcache后,需要对Drupal做的修改:
Drupal 7:
安装memcache模块;为涉及到的Drupal 7网站安装memcache模块
修改settings.php:
$conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc'; // The 'cache_form' bin must be assigned no non-volatile storage. $conf['cache_class_cache_form'] = 'DrupalDatabaseCache'; $conf['cache_default_class'] = 'MemCacheDrupal'; $conf['memcache_key_prefix'] = 'something_unique';
Drupal 6:
安装memcache模块;为涉及到的Drupal 6网站安装memcache模块
修改settings.php:
$conf['cache_inc'] ='sites/all/modules/memcache/memcache.inc'; $conf['memcache_key_prefix'] = 'something_unique';
多站点:
如果是多个站点在同一台服务器上,需要为每个站点设置各自的memcache_key_prefix,例如读取数据库设置的库名称来作为key:
D7:
$conf['memcache_key_prefix'] = $databases['default']['default']['database'];// 'something_unique';
D6:
$conf['memcache_key_prefix'] = strrev(strtok(strrev($db_url),'/'));// 'something_unique';
多站点可以逐个修改settings.php文件,也可以在每个settings.php文件结尾加上一句调用sites/common.php,然后以后每次修改common.php就可以了:
require_once(dirname(dirname(__FILE__)).'/common.php');
如果memcache内存设置不够大,会在管理界面中看到剩余内存在10%左右或者更少,这时可以修改memcached内存大小:vim /etc/sysconfig/memcached,改完后service memcached restart。
附参考网址:
评论