启用 wp super cache 和 memcached object cache 才是终极加速方案,早前已经给大家介绍过了 wp super cache 插件,下面给大家介绍下 memcached object cache 。()
1、wp super cache 插件缓存html页面和资源,减少硬盘读写次数
2、memcached object cache 缓存mysql查询语句尤其是组合查询语句,减少数据库读写次数
3、cloudflare cdn 提供cdn缓存,尽可能减少首次访问用户对服务器的读写
cloudflare不说了,简单明了。主要说一下wp super cache和memcached object cache的同时启用
安装组件
wp super cache开启php缓存模式,压缩关闭使用服务器的gzip即可,js和css minify关闭因为有可能会导致文件损坏,其他默认即可。在未启动memcached之前是看不到对象缓存选项的,下面说一下memcached
首先一点,memcache()是一项技术。memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载,原理是在内存里维护一张hash表保存sql查询,后来的相同查询即可直接从内存里读取而不必访问数据库了。因此,你需要安装memcache,服务器的名称叫做memcached
# redhat/centos 用yum,debian/ubuntu用apt-get
yum -y install memcached
# 启动服务
service memcached start
# 开机自启动
chkconfig memcached on
# 安装 dependencies
yum install cyrus-sasl-devel zlib-devel gcc-c
# 下载最新版 libmemcached 源码包
wget https://launchpad.net/libmemcached/1.0/1.0.18/ download/libmemcached-1.0.18.tar.gz
tar -xvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
# 编译安装
./configure --disable-memcached-sasl
make
make install
# 用 pecl 安装 memcached
pecl install memcached
# enable it for php
# 把 extension=memcached.so 取消注释或者添加到php.ini
# 比如 /usr/local/php/etc/php.ini
# 如果不知道php.ini在哪,执行下面这行即可
php --ini
# 重新启动 nginx 和 php-fpm
service nginx restart
service php-fpm reload
memcached默认监听端口是11211,一般没必要改
好,现在忘掉服务器memcached,我们来谈一下 php memcache 和 php memcached。这两个都是memcache的客户端,不带d的是老版本,带d的是新版本,更高更快更强,所以我们用 php memcached ()
整合
ok现在你有了服务器memcached,也有了客户端php memcached,下面需要让可以调用php memcached,所以你需要一个插件,memcached object cache
yd77699云顶国际官网版本(只能用于php memcache!):
php memcached版本:
切记要选择对版本,如果你安装的是memcache(不带d的版本),yd77699云顶国际官网的插件是对的;如果你安装的是memcached,切记请使用github那个版本,否则就会出现下面的错误
slyar$ curl -il http://www.slyar.com/blog/2016-honda-accord-touring-v6.html
http/1.1 500 internal server error
date: tue, 25 oct 2016 15:07:10 gmt
content-type: text/html; charset=utf-8
connection: keep-alive
gmt; path=/; domain=.slyar.com; httponly
x-powered-by: php
2016/10/25 23:11:33 [error] 20413#0: *1013 fastcgi sent in stderr: "php message: php fatal error: class 'memcache' not found in /xxxxxxxxxxxxxxxxx/wp-content/object-cache.php on line 425" while reading response header from upstream, client: xxxxxxxxxxx, server: slyar.com, request: "get /blog/2016-honda-accord-touring-v6.html http/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "www.slyar.com"
下载插件,然后将object-cache.php手动上传到/wp-content/下面(注意不是plugin目录)
然后再次进入wp super cache的设置界面 - 高级,这时应该就可以看到这个选项了,『 使用对象缓存系统来存储缓存文件。 (实验室功能)』,勾选,更新设置
如果一切正常,wp-content看起来应该是这样的
[slyar@slyar.com wp-content]$ ls -l *.php
-rw-r--r--. 1 www www 1027 oct 25 07:46 advanced-cache.php
-rw-r--r--. 1 www www 85719 oct 25 08:25 object-cache.php
-rw-r--r--. 1 www www 4991 oct 27 04:53 wp-cache-config.php
memcached探针
下面来查看以下memcached的工作情况
下载pecl-memcache: https://pecl.php.net/get/memcache-3.0.8.tgz
解压缩以后提取里面的memcache.php放置在web能访问到的地方,vim编辑,改一下下面这几个地方就好了
define('admin_username','www.slyar.com'); // admin username
define('admin_password','www.slyar.com'); // admin password
$memcache_servers[] = '127.0.0.1:11211'; // add more as an array
// $memcache_servers[] = 'mymemcache-server2:11211'; // add more as an array
网页访问即可看到memcached的工作情况了,hit(命中)92%效果非常显著
# 更多技巧,请关注「专题」