这个教程主要是方便和我一样使用 iGoogler 主题的人,能给自己的站点提一下速。因为一个效率优化做得那么好的主题,如果你还觉得速度慢,那真的是你不会使用了。
WordPress Object Cache 简介
WordPress Object Cache(WordPress 对象缓存)是 WordPress 自身的缓存机制,它的主要功能是把负责查询或者运算的结果按照 Key-Value 这样的方式(WordPress 还支持按照 Group 来划分和避免缓存的内容冲突)存储到对象里面,下次进行同样操作的时候,可以让直接从这个对象中取出数据,不用重复到数据库中或者其他外部网站获取数据。
由于 WordPress Object Cache 的特性,这个自身的缓存机制注定要配合服务器设置(财大气粗呀~)以及插件。如果你和我一样,没办法接触到类似于 Memcached 之类的东西的话,我推荐你使用 WP File Cache,他能帮助你把数据查询缓存到文件中。这样效率和速度都非常快的。如果不配合服务器设置和插件的话,个人感觉是没有什么作用的。
使用 WordPress Object Cache
下面我将以 iGoogler 主题的“相关文章”为例,说一下如何使用 WordPress Object Cache。
我们知道 “相关文章”的获取原理是通过文章的 Tags 来获取相关文章,相同的 Tag 越多,相关性越强,这样就需要进行大量的数据查询,大大降低了站点的效率。但是,一篇文章,在短时间内,它的“相关文章”是不会变动的,所以我们就可以使用 WordPress Object Cache 对“相关文章”进行加速。
下面是把“相关文章”的数据写入缓存的例子,缓存时间为一个小时,即 3600 秒。
打开主题的 loop_single.php,将
<?php echo wp_get_related_posts_igoogler(10); ?>
替换为
<?php global $post; $related_posts_data = wp_cache_get($post->ID, 'related_posts'); if(false === $related_posts_data){ $related_posts_data = wp_get_related_posts_igoogler(10); wp_cache_set($post->ID, $related_posts_data, 'related_posts', 3600); } echo $related_posts_data; ?>
代码大意是:如果在缓存中找不到数据,就查询数据库,然后再将数据写入缓存,并设定过期时间为一个小时,即 3600 秒;如果找得到缓存,并且缓存没有过期,就直接使用缓存的数据。