iGoogler 优化教程(三):巧用 PostMeta 提速

这个教程主要是方便和我一样使用 iGoogler 主题的人,能给自己的站点提一下速。因为一个效率优化做得那么好的主题,如果你还觉得速度慢,那真的是你不会使用了。

下面我将以 iGoogler 主题的“相关文章”为例,说一下如何巧用 PostMeta 提速。

我们知道 “相关文章”的获取原理是通过文章的 Tags 来获取相关文章,相同的 Tag 越多,相关性越强,这样就需要进行大量的数据查询,大大降低了站点的效率。但是,一篇文章,在短时间内,它的“相关文章”是不会变动的。所以我们就可以使用缓存对“相关文章”进行加速。

第一个方法是使用 WordPress Object Cache,这个方法需要配合服务器设置或插件,,否则基本没用,这也许会令某些人大感不爽。

所以下面我就要讲第二个方法——巧用 PostMeta:

PostMeta 加速原理

我们知道,PostMeta 表是用来存储 Post 其他自定义字段,比如你可以在 WordPress 编辑界面自定义字段那里使用它。那么我可以把当前文章的“相关文章”数据写到 PostMeta 中去,并记录写入的时间。然后再取出,就可以达到加速的效果。

巧用 PostMeta 提速

下面是把“相关文章”的数据写入缓存(PostMeta)的例子,缓存时间为一个小时,即 3600 秒。

打开主题的 loop_single.php,将

<?php echo wp_get_related_posts_igoogler(10); ?>

替换为

<?php
global $id;
$related_posts_data_old = get_post_meta($id, "related_posts", $single = true);
if($related_posts_data_old){
	$time = time();
	if(($time - $related_posts_data_old["time"]) < 3600){
		echo $related_posts_data_old["related_posts"];
	}
}else{
	$related_posts_data = wp_get_related_posts_igoogler(10);
	$related_posts_data_new = array("time"=>time(), "related_posts"=>$related_posts_data);
	if($related_posts_data_old){
		update_post_meta($id, 'related_posts', $related_posts_data_new);
	}else{
		add_post_meta($id, 'related_posts', $related_posts_data_new, true);
	}
	echo $related_posts_data;
}
?>

代码大意是:如果在缓存(PostMeta)中找不到数据,就查询数据库,然后再将数据写入缓存,并设定过期时间为一个小时,即 3600 秒;如果找得到缓存,并且缓存没有过期,就直接使用缓存的数据。

此文章是由nikbobo发表在旧博客分类目录的。将固定链接加入收藏夹。

关于 nikbobo

Nikbobo,本名刘永强,记忆空间站长,男,1998 年出生于广东茂名,至今(2020 年)21 岁,目前(2020 年)就读于广州大学华软软件学院,常以“nikbobo”这个网名混迹互联网。如无特殊注明,Nikbobo 在本站发表的文章,遵循 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议。详情请参阅关于页面的作者介绍。

发表评论

您的电子邮箱地址不会被公开。