在使用WordPress构建Web应用程序时,其强大的API提供了很多帮助。 使用Options API添加或检索任何数据都没什么大不了的。 但是有时我们需要存储具有到期时间的临时数据。
WordPress通过Transients提供了直观的缓存来做到这一点,即存储具有到期时间的临时数据。 我们将使用瞬态,所以我想为什么不重新看一下本文中的WordPress Transients API。
根据WordPress Codex :
Transients API与Options API非常相似,但是具有到期时间的附加功能,该功能简化了使用wp_options数据库表临时存储缓存的信息的过程。
在本系列的范围内,瞬态提供了一种有效的方式,当用户通过存储临时数据来激活插件时,将用户重定向到欢迎页面。
在本文中,我们将探讨WordPress中的Transients API的概念以及它与Options API的区别。 所以,让我们开始吧。
瞬态API
瞬态通过提供自定义名称(键值对)和到期时间,为我们提供了临时存储缓存信息的方法。 一旦定义的时间范围结束,瞬变就会终止并被删除。 这些瞬变可提高性能并加快整个Web应用程序的性能。
但是出现一个问题: 到期时间是 使用WP Transient API 的唯一原因 吗?
答案是不! 尽管Option API达到了数据存储,清理和检索的相同目的,但对于大数据集,它可能无法提供最佳性能。
添加时间范围后,瞬变成为临时存储数据的最合适方法。 为了确保较少的Web查询,瞬态具有将数据存储在快速内存(例如Memcached )中而不是传统WordPress数据库中的功能。 还要注意的是,Transients本质上是通过缓存插件来加速的,而普通的Option则不是。 如法典中所述:
例如,一个Memcached插件将使WordPress将瞬态值存储在快速内存中而不是数据库中。 由于这个原因,应该使用瞬态来存储任何预期会到期或随时可能到期的数据。 暂态也不应被假定为存在于数据库中,因为它们可能根本不存储在数据库中。
因此,每当您需要在特定时间段后到期或被删除的功能时,请使用瞬态代替选项。 以后再说。
使用瞬态
瞬态使用非常简单的界面工作。 您可以使用它们执行三个基本功能:
- 通过
set_transient()
函数创建/更新瞬态 - 通过
get_transient()
函数检索瞬态 - 通过
delete_transient()
函数删除瞬态
这三个基本操作可以帮助您提高Web性能。
1.创建/更新瞬态
使用set_transient()
函数创建或更新任何瞬态。 该函数具有三个参数:
- 键 :(类型
string
)瞬变的名称。 长度不得超过172个字符。 - 值 :(
mixed
类型)这是需要存储的数据。 可以是PHP变量或数组对象。 - 到期时间:(类型为
int
)直到到期的最长时间(以秒为单位)。 默认值0(无有效期)。
指向思考:您设置的到期日期是将存储瞬态的最大时间量。 在那之后,瞬变被删除。 但是它也可以在那之前被删除。 由于它是缓存的一部分,因此用户可以在此之前将其删除。 因此,始终将失效时间视为瞬态寿命中的最大时间,并仅保证在此之后将其删除。
<?php set_transient( string $transient, mixed $value, int $expiration ) ?>
前两个参数是键值对,并且是必填项,而第三个参数(定义最大到期时间)是可选的。
调用此函数的一个实际示例如下:
<?php
// Transient max age is 60 seconds.
set_transient( '_welcome_redirect_wpw', true, 60 );
?>
瞬态时间常数
在上面的示例中,我添加了60秒作为第三个参数,它定义了删除瞬态之后的到期时间。 根据上面的示例,对象_welcome_redirect_wpw
的最长_welcome_redirect_wpw
只能为60秒。
在WordPress 3.5中,引入了几个常量来轻松表达时间。 这些常量使代码更全面,更精确。 清单如下:
MINUTE_IN_SECONDS = 60 (seconds)
HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS
DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS
WEEK_IN_SECONDS = 7 * DAY_IN_SECONDS
YEAR_IN_SECONDS = 365 * DAY_IN_SECONDS
2.检索瞬态
通过set_transient()
函数存储值之后,可以通过调用get_transient()
函数来检索值。
它使用单个参数,即瞬变$transient
的键(即名称),并返回$transient
的(类型mixed
)值。
标准格式为:
<?php get_transient( string $transient ); ?>
在我们的示例中,该值是通过以下方式获取的:
<?php get_transient( '_welcome_redirect_wpw' ); ?>
很简单吗? 但是,如果瞬态不存在或已过期,将会发生什么? 如果是这种情况,那么get_transient()
函数将返回一个false
值。
我建议您在获取瞬态值以测试其是否为假时使用标识运算符( ===
)。
$ a === $ b | 相同 | 如果$ a等于$ b并且它们是同一类型,则为TRUE 。 |
3.删除瞬态
在某些情况下,您可能希望在瞬变终止之前将其删除。 delete_transient()
函数可以帮助您。 其格式类似于get_transient()
函数。
它采用单个参数,即瞬态$transient
的键(即名称),并永久删除瞬态。
这是常规格式:
<?php delete_transient( string $transient ); ?>
在我们的情况下,我们可以这样删除它:
<?php
// Delete the redirect transient.
delete_transient( '_welcome_redirect_wpw' );
?>
瞬态的使用
瞬态可用于缓存从最基本的数据类型到完整的小部件的所有内容。 自启动以来,瞬态已在不同的Web项目中使用。 以下是瞬态的一些实用用法:
- 当然,您可以在插件的欢迎页面中使用它们,这是本系列的范围。
- 您可以在侧边栏小部件中使用它们,该侧边小部件列出了诸如热门博客评论,帖子等数据。
- 您可以通过瞬变加快WordPress导航菜单。
- 您可以缓存带有瞬变的标签云。
结论
WordPress Transients API的基础知识已全部完成。 在接下来的两篇文章中,我将为WordPress插件建立一个欢迎页面。 我将粗略的想法变成更有意义和更实际的东西。
最后,您可以在我的个人资料页面上捕获我的所有课程和教程,还可以在我的博客上关注我,和/或在Twitter @mrahmadawais上与我联系 ,在那儿我写了有关WordPress的开发工作流的信息。
和往常一样,请不要在下面留下任何问题或评论,我将尽力回答每个问题或评论。