WordPress启用Memcached内存缓存和Page Cache页面缓存

提高WordPress站点的访问速度,最快最方便的方法就是使用缓存,而网站使用最多的就是内存缓存Memory Cache和页面缓存Page Cache;

Memory Cache和Page Cache的区别

Memory Cache内存缓存存储在RAM上,这样写和访问速度更快,但在电脑关机或某些其他情况下会被清除。磁盘缓存写入硬盘,读写较慢,但会留在磁盘上。在VPS服务器上启用memory cache目的是为了将数据库的动态内容缓存起来,这样不用每次得到相同请求时都要去查询搜索数据库存,更加节省资源和时间。Memory Cache有很多种,如APCu,Redis,相对于小型VPS来讲Memcached是最为合适的。

Page Cache页面缓存用于加速对磁盘上图像和数据的访问。它用于一次一页地缓存文件的逻辑内容,并通过文件和文件内的偏移量来访问。当页面从磁盘读入内存时,它们被缓存在页面缓存中。所以在VPS启用page cache就能更快读取内容,而不用每次得到请求要向磁盘搜索内容再输出。

区分内存缓存memcached和memcache

Memcached (Memcache Daemon)是基于 libmemcached库开发的一个缓存守护进程,专门为动态web应用程序设计,通过在内存中存储对象来减少数据库负载。它通常用于通过在服务器内存中缓存数据和对象来加速动态数据库驱动的网站,以减少必须读取数据源的次数。Memcached是根据修订后的BSD许可证许可的免费开源软件。官方网站:https://memcached.org/

Memcache是PHP的扩展模块,虽然稳定,但功能较少;通常直接利用守护进程,而PHP Memcached模块使用libMemcached客户端库并包含一些附加特性,功能丰富。PHP  Memcache模块下载地址:https://pecl.php.net/package/memcache

安装Memcached内存缓存

启动Memcached就必须要安装PHP Memcache扩展模块,因为PHP Memcache扩展允许您通过方便的面向对象和过程接口使用memcached,允许使用通过memcache在memcached中存储会话。LNMP对于memcached/memcache只能二选一,所以需要手动安装

下载: 
cd /usr/local/src
wget https://pecl.php.net/get/memcache-8.0.tgz
解压:tar -xvzf memcache-8.0.tgz

初始化:
a. cd memcache-8.0
b. /usr/local/php/bin/phpize
		
配置:./configure --with-php-config=/usr/local/php/bin/php-config
安装: make & make install
检查:Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20210902/下是否生成memcache.so
激活:/usr/local/php/etc/php.ini 找到Dynamic Extensions 添加 extension=memcache.so

为了不损坏php.ini,推荐使用以下方法添加memcache.so
cat >/usr/local/php/conf.d/004-memcache.ini<<EOF
extension = memcache.so
EOF

** 004代表优先处理优先级,较小的值会在较大的值之前加载文件。lnmp的memcached加载值是005
** conf.d的文件默认覆盖php.ini下的同一命令或参数
重启PHP:lnmp restart
在prober.php中检查是否生效

安装完成PHP memcache扩展后,再安装Memcached,可以选择LNMP下addons的命令安装,也可以使用以下官方提供的源码手动安装

wget http://memcached.org/latest
tar -zxvf memcached-1.x.x.tar.gz
cd memcached-1.x.x
./configure && make && make test && sudo make install

检测Memcached内存缓存

在PHP memcache和Memcached安装完成以后,最好是再通过prober.php类似的程序检查一下代码是否安装成功。如安装成功使用以下命令检测memcached

telnet 127.0.0.1 11211 得到结果: Escape character is '^]'.
命令:stats, 得到各参数状态
命令:stats items, 检查项目状态
命令:stats slabs, 检查内存状态
或:ss -tunl | grep 11211

端口11211是Memcached默认的,如果以下检测结果正常,则表示Memcached内存缓存启动成功

如何让WordPress启用Memcached内存缓存

WordPress使用Memcached内存缓存需要用到一个后端对象缓存程序Memcached Object Cache,可以在WordPress插件页直接下载https://wordpress.org/plugins/memcached/,此插件是不能直接安装的,需要装下载下来的object-cache.php文件手工放置到wp-content目录下,WordPress将会自动识别此缓存文件;

到目前,Memcached已经在WordPress启用成功了。如果默认本地服务器不是127.0.0.1,需要在wp-config.php中指定默认

$memcached_servers = array(
    'default' => array(
        '127.0.0.1:11211',
        '10.10.10.20:11211',
        '10.10.10.30:11211'
    )
);

但是如果一个VPS下有多个网站需要使用Memcached,而Memcached是共用池,多个 WordPress 网站的表前缀都相同wp_或是不同的,那么 object-cache.php 就无法区分是哪个站点了。我们需要告诉Memcached如何去区分保存缓存数据,以便不同网站能识别;

Memcached Object Cache最大的方便就是不需要去改表前缀了,只需要在wp-config.php指定一下key就行。

define( 'WP_CACHE', true );
define( 'WP_CACHE_KEY_SALT', 'colinqi.com');

如果需要视图效果查看点击率等数据,可以下载一个页面程序通过网页直接查看;由kn007提供的memcached.php则是为您的memcached服务器提供一个类似APC的stats/info页面。(unix套接字支持),下载地址:https://github.com/kn007/memcache.php

 

Memcache Cache Info
Memcache Cache Info

如何启用页面缓存Page Cache

使用Page Cache的WordPress的插件是非常多的,也有使用手工代码的,但不如插件方便;这里推荐一个单纯的Page Cache页面缓存插件,功能单一,不像很多SEO插件集成了很多用不到的功能,而且还是免费的。插件名称:Cache Enabler, 此插件还有一个不错的进阶功能就是可以集成KeyCDN, 主要特点如下:

  • 快速高效的缓存引擎
  • 自动智能缓存清除
  • 手动缓存清除
  • WP-CLI缓存清除
  • 缓存过期
  • WebP支持(使用Optimus将图像转换为WebP)
  • 支持移动平台
  • Brotli和Gzip预压缩支持
  • HTML的缩小,包括或不包括内联CSS和JavaScript
  • WordPress仪表盘中的实时缓存大小显示
  • 自定义帖子类型支持
  • 304未修改支持
  • 与插件Autoptimize完美配合

The End.

Previous/Next

Say Something!

Leave a Reply