很久前用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。
附參考網址:
评论