WordPress 中如何批量获取一组缓存?
类似于 Memcached 等很多缓存服务都支持一次请求获取多个数据,这样意味着无须多次连接外部对象缓存服务,可以显著的提升网站的效率。
wp_cache_get_multiple()函数
而 WordPress 之前只能通过 wp_cache_get()
函数一次获取单个缓存的值,所以在 WordPress 5.5 新增了 wp_cache_get_multiple()
函数,终于让 WordPress 可以一次连接获取多个缓存 key 对应的值,函数的参数为一组来自同个 group 的缓存 keys 数组,具体使用方法:
wp_cache_get_multiple($ids, $cache_group);
额外说明一下,为什么函数名中使用 multiple 这个字眼呢?因为现有的很多缓存插件已经有了 wp_cache_get_multi()
这样的函数,但是这些函数的参数不一样,为了避免冲突,所以 WordPress 官方就用 wp_cache_get_multiple()
这个函数名。
object-cache.php 实现
这个函数是需要插件开发者在 object-cache.php
中去实现,没有的话,WordPress 只能通过兼容来处理,就是循环调用 wp_cache_get()
来获取这组缓存 keys 的值,这样完全无法体现 Memcached 的高效率。
目前 WordPress 已经在下面这几个函数的内部调用 wp_cache_get_multiple()
来提高程序的效率。
- update_object_term_cache()
- update_meta_cache()
- _get_non_cached_ids()
新版的 WPJAM Basic 中内置的 object-cache.php
已经实现了 wp_cache_get_multi()
函数,更新新版之后,下载 WPJAM Basic 之后,将 wpjam-basic/template/
目录下的 object-cache.php
文件重新复制到 wp-content
目录下即可。