前两天介绍了使用基于WPJAM Basic插件使用Memcached加速优化WordPress 对象缓存的方法,我不太喜欢使用插件,相应有很多站长为了性能,不喜欢安装插件,我也不喜欢,那能不能不使用插件就实现Memcached 或 Redis 加速优化 WordPress 对象缓存,答案是可以的。
Redis 加速
安装 Redis 服务和 PHP Redis 扩展
如果你使用的是宝塔面板(建议使用宝塔),可以在软件商店里直接Redis和开启PHP Redis拓展,如果你想直接安装的话,Ubuntu、Debian、CentOS 发行版中都有 Redis 服务,接执行对应的命令安装即可。
apt-get install redis
安装了 Redis 服务后,面板通过在软件商店开启 PHP Redis 扩展,才能让 WordPress 缓存数据到 Redis 中,没有面板或者是没有直接开启拓展的执行下面这个命令。
pecl install redis
Memcached 的安装方法和 Redis 类似。安装并确认我们需要的 Redis 或 Memcached 服务生效后,我们还需要在 WordPress 中启用 Redis 或 Memcached 对象缓存,才能利用这两个服务为我们持久化对象缓存。
在 WordPress 中启用 Redis 对象缓存
在 WordPress 中启用持久化对象缓存的方法是使用自定义缓存函数替换 WordPress 中默认的缓存函数,方法是添加一个 「object-cache.php」到「wp-content/」目录中。「object-cache.php」本质上是一个 “Drop-in” 类型的 WordPress 插件,用来取代 WordPress 内置的功能。
为了把对象缓存缓存到 Redis 中,我们需要在 WordPress 中启用 Redis 对象缓存,从下面的公众号回复【缓存】的地址中下载「object-cache.php」,然后上传到 WordPress 站点的 「wp-content/」目录中即可。
Memcached 对象缓存插件
如果你使用的是 Memcached 来持久化 WordPress 对象缓存,可以使用wp-memcached,老规矩回复【wpm】获取。有些插件会自动添加「object-cache.php」到 wp-content/ 目录中,比如流行的 WP Super Cache 插件,在遇到这种情况是,直接替换这个文件即可。如果添加了「object-cache.php」后,遇到网站出现 500 错误而打不开的情况,说明我们的 Redis 服务或扩展没有安装好,检查以下,确保他们可用,再添加「object-cache.php」即可。
在开发 WordPress 主题或插件时使用对象缓存
//WordPress 为我们提供了使用对象缓存的函数,方便我们使用对象缓存。
wp_cache_add() :添加数据到缓存中,如果数据已存在,返回 flase
wp_cache_set() :添加数据到缓存中,如果数据已存在,会覆盖数据
wp_cache_get() :获取缓存中的数据,如果数据不存在,返回 false
wp_cache_delete() : 从缓存中删除数据
wp_cache_replace() :替换缓存中的数据,类似 wp_cache_set,但是如果数据不存在,不自动添加
wp_cache_flush():清除所有缓存
WordPress 对象缓存使用使用示例
$result = wp_cache_get( 'my_result' );
if ( false === $result ) {
$result = $wpdb->get_results( $query );
wp_cache_set( 'my_result', $result );
}
拓展:对象缓存和页面缓存的区别
- WordPress 生成的页面缓存起来的方法叫 “页面缓存”,缓存的直接是 WordPress 生成的 HTML 页面,不只缓存数据库查询,还缓存了页面模版中的 PHP 逻辑运算结果。
- 而对象缓存缓存的只是 MySQL 数据库查询结果,并必会缓存其他类型的 PHP 运算,相对页面缓存,更加底层,缓存粒度细,也更容易操作。另一方面,WordPress 对象缓存不只可以缓存前台数据库查询,也可以缓存仪表盘的数据查询结果,可以在一定程度上提高 WordPress 后台的打开速度。
说明:文章参考wordpress智库,如果觉得难推荐使用WPJAM Basic插件使用Memcached加速优化WordPress 对象缓存的方法。
暂无评论