WordPress安装memcached可以将对象缓存到内存中,减少MySQL查询,可以提升WordPress效率。
安装插件Memcached Object Cache
在https://wordpress.org/plugins/memcached/下载后,解压,将 object-cache.php 文件传到 wp-content/ 下面。
安装php-memcached、memcached
yum install -y php-memcache、memcached service memcached start && service httpd restart chkconfig --level 2345 memcached on
wp-config.php 文件查看是否有
define('WP_CACHE', true)
没有请加上。
并且在该文件倒数几行:
if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/');
的前面加上
define('WP_CACHE_KEY_SALT', 'wpmore.cn');
这里的 wpmore.cn 是随意取的名字,如果一台服务器有多个WordPress站点,就可以在相应的wp-config.php添加 WP_CACHE_KEY_SALT,后面取值随意写,不要重复,如:
第一个站点 wp-config.php
define('WP_CACHE_KEY_SALT', 'site1');
第二个站点 wp-config.php
define('WP_CACHE_KEY_SALT', 'site2');
查看memcached统计
在 http://pecl.php.net/package/memcache 下载最新版本,然后将 memcache.php 传到网站目录中,访问就可以查看memcached的命中率、内存使用等。
memcache.php有账号密码,默认账号:memcache,密码:password,可以打开php文件自行修改。
建立定时任务监听memcached
要监听memcached然后自动重启,首先我们对memcached的启动输出日志。
vi /etc/sysconfig/memcached
将里面的内容改为:
PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="128" OPTIONS="-d -m 128 -u root -vv >> /var/log/memcached.log 2>&1"
切割日志:
vi /etc/logrotate.d/memcached
加入:
/var/log/memcached.log { daily rotate 3 dateext missingok create 0640 root root compress delaycompress postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
创建shell监听memacached:
vi /shell/memcached.sh
加入:
#!/bin/bash cur_time="`date +%y-%m-%d,%H:%M:%S`" pgrep -x memcached &> /dev/null if [ $? -ne 0 ] then echo "At time:$cur_time Memcached is stop">> /var/log/memcached.log /usr/bin/memcached -d -m 128 -u root -vv >> /var/log/memcached.log 2>&1 else echo "Memcached server is running...">> /var/log/memcached.log fi
用crontab建立定时任务:
crontab -e
末尾加入一行:
*/5 * * * * /bin/bash /shell/memcached.sh
这样就可以每个5分钟自动监听memacached了。
关于Memcached
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。
Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。
Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。
Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。
本质上,它是一个简洁的key-value存储系统。
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
我写了很多WordPress缓存加速的方法: