前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 WordPress Transients API 缓存复杂的 SQL 查询和运算结果

使用 WordPress Transients API 缓存复杂的 SQL 查询和运算结果

作者头像
Denis
发布2023-04-14 09:56:25
9190
发布2023-04-14 09:56:25
举报
文章被收录于专栏:WordPress果酱WordPress果酱

什么是 WordPress Transients API

Transients 是瞬时的意思,WordPress Transients API 是 WordPress 用来缓存一些复杂的 SQL 查询和运算结果的最简单的方法。它给这些需要缓存的数据一个过期时间,并且时间一到就会自动删除。

所以如果你在制作 WordPress 插件的时候,需要存储一些有一定生命周期的数据的时候,Transients API 是最好的选择。

WordPress Transients API 缓存的数据存储在哪里

这个取决你的服务器设置,如果你的服务器开启 Memcached,那么缓存的数据就存在 Memcached 的内存中,如果没有开启的话,则存储到 WordPress 数据库的 Options 表中。

WordPress Transients API 的函数

上面说到服务器没有开启的时候,数据是存储到 Options 表中的,所以它接口函数和 WordPress 的 Option API (get_option, add_option, update_option, delete_option))基本一样,唯一区别就是 Transients API 有一个过期时间。所以 WordPress Transients API 有类似的以下三个函数:

代码语言:javascript
复制
set_transient() // 保存一个临时数据到缓存中
get_transient() // 从缓存中获取一个临时数据
delete_transient() // 从缓存中删除一个临时数据

如果你使用函数 get_transient 去获取一个临时变量,它已经过期或者不存在,则返回 false。另外 Transients API 不会将数据库的 Options 表充满,因为临时变量一旦过期,下次获取的时候就会自动被删除。

WordPress Transients API 例子

假设你要获取博客的流量最高的 10 篇文章,这个要设计复杂的 SQL 查询,而流量最高的 10 篇文章一般来说在一段时间(比如:12小时)之内是不会变化的,所以我们可以把这个数据通过 Transients API 先缓存了。代码如下:

代码语言:javascript
复制
function wpjam_get_top_10_posts(){
	$top_10_posts = get_transient('top_10_posts');

	if(false === $top_10_posts){ // 临时变量过期了或者根本就没有创建

		// 通过 SQL 查询获取流量最高的 10 篇文章,
		$top_10_posts = get_most_viewed(10);

		// 把临时变量存到数据库中,时间为 12 个小时
		set_transient('top_10_posts', $top_10_posts, 60*60*12);
	}
	return$top_10_posts;
}

其中 get_most_viewed 是它是用来获取流量最高的文章的函数。

如果由于某种原因某篇流行文章删除,或者新的文章发布了,这个时候可能流量最高的文章都可能发生变化,我们需要使用 delete_transient 函数把这个临时变量删除了。代码如下:

代码语言:javascript
复制
add_action('publish_post', 'wp_top_10_posts_delete', 0);
add_action('delete_post', 'wp_top_10_posts_delete', 0);
functionwp_top_10_posts_delete(){
	delete_transient('top_10_posts');
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 WordPress Transients API
  • WordPress Transients API 缓存的数据存储在哪里
  • WordPress Transients API 的函数
  • WordPress Transients API 例子
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档