使用 Memcached 或 Redis 加速优化 WordPress 对象缓存(Object Cache)

2022-03-08 0 557

WordPress 对象缓存(Object Cache)是 WordPress 中缓存耗时数据库查询结果方法,默认情况下,对象缓存是非持久性的,只在请求期间保留在内存中,请求过期后,缓存也就失效了,下次请求时则需要重新生成。

WordPress 默认对象缓存的效率问题

熟悉缓存原理的朋友会发现,这种机制的效率并不高,为了提高对象缓存的效率,我们需要持久化对象缓存,也就是说,把对象缓存的结果保留下来,不让他们在页面请求结束时失效,这样在下次页面请求时就可以直接使用保存下来的缓存结果,而不用再次查询数据库了。

使用 Redis 或 Memcached 持久化对象缓存数据

Redis 和 Memcached 都是知名的内存型数据库,因为他们可以把数据直接保存在内存中,可以大大提高数据的存取速度,他们常常被用来当作 MySQL 的缓存数据库使用。

安装 Redis 服务和 PHP Redis 扩展

Ubuntu、Debian、CentOS 发行版中都有 Redis 服务,我们直接执行对应的命令安装即可。当然如果想获得更多的控制,我们也可以自己下载源码编译 Redis 服务端。

apt-get install redis

安装 Redis 服务器后,如果启动不成功,报「MISCONF Redis is configured to save RDB snapshots」 的错误,我们可以使用 redis-cli 关闭掉数据库硬盘快照功能,因为我们只用 Redis 做缓存服务,不需要保存数据到硬盘中。

127.0.0.1:6379> config set stop-writes-on-bgsave-error no

安装了 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/」目录中即可。

https://github.com/pressjitsu/pj-object-cache-red

Memcached 对象缓存插件

如果你使用的是 Memcached 来持久化 WordPress 对象缓存,下面两个缓存插件都可以使用,任意选择一个即可。

有些插件会自动添加「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 );
} 

对象缓存和页面缓存的区别

本站之前介绍过使用 Cachify 缓存 WordPress 页面 来提高页面加载速度的方法,这种直接把 WordPress 生成的页面缓存起来的方法叫 “页面缓存”,缓存的直接是 WordPress 生成的 HTML 页面,不只缓存数据库查询,还缓存了页面模版中的 PHP 逻辑运算结果。

而对象缓存缓存的只是 MySQL 数据库查询结果,并必会缓存其他类型的 PHP 运算,相对页面缓存,更加底层,缓存粒度细,也更容易操作。另一方面,WordPress 对象缓存不只可以缓存前台数据库查询,也可以缓存仪表盘的数据查询结果,可以在一定程度上提高 WordPress 后台的打开速度。

两种缓存方法都可以大幅提高WordPress页面加载速度,页面缓存适合在没用用户登录的网站上使用;而对象缓存适合在需要用户登录操作的网站上面使用,以避免页面缓存缓存了需要用户登录才可以查看的内容

总结

无论是页面缓存、还是对象缓存,都是用来提高数据获取效率,加快网站页面打开速度的,对象缓存和页面缓存并不冲突,可以同时使用,相互配合。虽然缓存可以提高页面打开速度,但是并不意味着,我们在开发时就不用考虑性能和效率问题了。始终把数据存取效率放在心中,才能开发出高性能的 WordPress 应用,提高用户体验

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 WordPress教程 使用 Memcached 或 Redis 加速优化 WordPress 对象缓存(Object Cache) http://www.20zxx.cn/364417/wordpres/wordpressq.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务