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/」就在目录中。
/pressjitsu/pj-object-cache-red
Memcached 对象缓存插件
假如你用的是 Memcached 来持久化 WordPress 对象缓存,可使用以下两个缓存插件,任意选择一个。
/Automattic/wp-memcached/joomlaworks/wp-memcached-object-cache
自动添加一些插件「object-cache.php」到 wp-content/ 比如流行的目录 WP Super Cache 在这种情况下,插件可以直接更换此文件。
如果添加了「object-cache.php」之后,网站出现了 500 错误和不能打开的情况表明我们 Redis 未安装服务或扩展,检查以下内容,确保其可用,然后添加「object-cache.php」即可。
在开发WordPress在主题或插件中使用对象缓存
WordPress 为我们提供使用对象缓存的函数,方便我们使用对象缓存。
wp_cache_add() :将数据添加到缓存中,如果数据已存在,则返回 flasewp_cache_set() :将数据添加到缓存中,如果数据已存在,覆盖数据wp_cache_get() :获取缓存中的数据,如果数据不存在,请返回 falsewp_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 应用程序,提高用户体验。