在WordPress性能优化 - 缓存篇 (1) 中,我们主要提及了通过插件来提升Wordpress的性能。但对于Wordpress主题、插件开发者来说,合理的应用Wordpress Cache API也是必备的能力之一。
Wordpresss的缓存API
Wordpress Object Cache API主要包含6个函数,分别为:wp_cache_add,wp_cache_set,wp_cache_get, wp_cache_delete, wp_cache_replace, wp_cache_flush。它们在wordpress的源文件中的wp-includes/cache.php内定义。其主要功能是为开发者提供对php对象的缓存功能。
wp_cache_add( $key, $data, $group, $expire )
添加缓存。$key通常是字符串,用来区分不同的缓存,$data是要缓存的数据。$group可选,用来对缓存进行分组,一般是用来确保你的缓存不会与其它插件或主题生成的Key产生命名上的冲突。$expire为缓存的有效期,单位为秒。默认为0,表示尽可能长的时间。
当插入的$key,已经在系统中存在的wp_cache_add不会替换已有的缓存,而是直接返回false。
wp_cache_set( $key, $data, $group, $expire )
与wp_cache_add类似,同样向系统中添加缓存(不管$key是否存在),不同之处在于如果$key已经存在,则覆盖已有的缓存。
wp_cache_get( $key, $group )
wp_cache_get( $key, $group = '', $force = false, $found = null )
获取缓存,当没有找到$key对应的缓存时,返回false。有的时候,为了区分缓存的数据为false和没有找到$key所返回的false,你会用到$found参数。$found为引用变量,当方法调用结束后,若是满足$found === false,则表示所要查找的$key并不存在。
wp_cache_delete( $key, $group )
与wp_cache_add相反,删除已经缓存。
wp_cache_replace( $key, $data, $group, $expire )
替换已经缓存。与wp_cache_set十分相似,只是当$key不存在时,wp_cache_replace不会添加缓存。
wp_cache_flush()
清除所有缓存。
需要注意的是,wordpress本身的缓存并不是持久的,这意味着缓存仅仅能应用在当前的请求内,HTTP请求结束后,缓存会被服务器清空。开发者需要安装特定的插件来实现持久的缓存。
而且并不是所有的缓存插件都实现了wp_cache_add_non_persistent_groups方法。实现持久的缓存的插件主要有:W3 Total Cache , WP File Cache, Memcached Object Cache , APC Object Cache, File-Based Caching for WordPress。
小结
笔者水平一般,对wordpress的缓存机制了解仅限如此,如有不对之处敬请指出,并多多包涵,感谢之至。