WordPress 的 Transients API 自 2.8 版本起就已支持,但许多 WordPress 开发者仍未意识到它的存在及其用途。简而言之,WordPress Transients API 允许我们存储具有过期时间的键值对数据。
本教程将深入讲解如何使用此 API。我们还将了解它与 Options API 的区别,它如何与 WordPress 缓存系统交互以及一些用例。
### Options API 与 Transients API 的比较
大多数 WordPress 开发者都了解 WordPress Options API。Options API 允许我们将键值对数据永久存储在数据库中。许多 WordPress 开发者没有意识到的是,Options API 实现了一个缓存层(即 WordPress 对象缓存)来缓存选项。如果未启用持久缓存,则每次 HTTP 请求都会创建一个新的缓存会话,否则 Options API 将使用持久缓存。
几乎每个 WordPress API 都使用 WordPress 对象缓存与 MySQL 交互,以缓存数据以防止多次 MySQL 查询。
Transients API 的工作方式与所有其他 API 略有不同。它仅当未启用持久缓存时才将键值对数据存储在 MySQL 中,否则它仅使用对象缓存。而所有其他 API 都使用两者来同步数据,以确保数据的持久性。因此,Transients 不是持久的,即不应将其用于存储关键数据。因此,Transients API 非常适合缓存数据。
注意:如果未启用持久缓存,则 Transients API 使用 Options API 来存储键值对数据,否则它直接使用对象缓存。Transients 存储在 Options 表中。每个 transient 由两个选项组成,即键值对数据和键值对过期日期。
要设置 transient,我们需要使用 set_transient()
函数。此函数采用三个参数:
以下是使用 set_transient()
函数的代码示例:
set_transient("Website", "SitePoint", 3600);
在这里,我们将名为“Website”的键与值为“SitePoint”的值存储 1 小时。1 小时后,该键将不再可访问。
set_transient
如果 transient 成功创建则返回 true,否则返回 false。
如果您没有提供过期时间或提供“0”作为过期时间,则它永远不会使 transient 过期。
注意:如果未提供过期时间或过期时间为“0”,则 transients 会自动加载(即在请求页面时加载到内存中)。
Transients API 还提供另一个函数来创建 transient,即 set_site_transient
。它也采用与 set_transient
相同的三个参数。它们之间的大部分功能都是相同的。set_transient
和 set_site_transient
之间的区别在于:
set_site_transient
用于多站点网络时,transient 可用于网络中的所有站点。set_site_transient
创建的 transients 始终自动加载。最后,如果您运行现有 transient 键的 set_transient
,则值和过期时间将更新为新提供的值和过期时间。过期时间是从首次设置 transient 时计算的。
要检索存储的 transient,您需要使用 get_transient
函数。它只接受一个参数,即 transient 的名称。
set_transient("Website", "SitePoint", 3600);
如果 transient 已过期或不存在,则 get_transient
返回 false。否则,它返回 transient 的值。
如果 transient 已过期或未找到,则会返回 false,因此您永远不应在 transient 中存储布尔值。如果您想存储布尔值,请使用整数形式,即 0 或 1。
如果您已使用 set_site_transient
设置了 transient,请使用 get_site_transient
来检索它,而不是 get_transient
。
要删除 transient,您需要使用 delete_transient
函数。它只接受一个参数,即 transient 的名称。
这是一个示例:
$value = get_transient("Website"); if($value === false) { echo "Expired or not found"; }
如果 transient 成功删除,则返回 true。如果找不到 transient 或由于其他原因无法删除 transient,则返回 false。
如果您已使用 set_site_transient
设置了 transient,请使用 delete_site_transient
来删除它,而不是 delete_transient
。
Transients API 可用于缓存任何内容。大多数插件都使用此 API 来缓存数据。为了举例说明,让我们看看如何检索和缓存类别的帖子。
delete_transient("Website");
在这里,我们缓存类别帖子 1 小时。我们使用 WP_Query
类检索帖子。WP_Query
被序列化并存储为 transient。检索时,它会被反序列化。
本文演示了我们如何轻松地使用 Transients API 在 WordPress 中缓存数据。
您可以使用 Memcached 对象缓存或 WP Redis 插件在 WordPress 中启用持久缓存。
请在下面的评论中告诉我您使用此 API 的经验。
使用 WordPress Transients API 的主要目的是存储临时数据,这有助于加快 WordPress 网站的速度。它允许开发人员存储具有过期时间的 data。此数据可以是任何内容,从复杂的数据库查询结果到简单的字符串值。通过存储此数据,您的 WordPress 网站可以快速检索它,而无需每次都重新生成它,从而提高网站的性能。
WordPress Transients API 通过减少数据库查询次数来提高网站性能。当使用 Transients API 存储数据时,可以从缓存中快速检索它,而无需执行新的数据库查询。这大大减少了服务器的负载并加快了页面加载时间,从而提供了更好的用户体验。
不可以,WordPress Transients API 不是为永久数据存储设计的。使用 Transients API 存储的数据是临时的,并且有过期时间。数据过期后,它会自动从缓存中删除。如果您需要永久存储数据,则应使用其他 WordPress API,例如 Options API。
您可以使用 delete_transient
函数在 WordPress 中删除 transient。此函数将 transient 的名称作为其参数。这是一个例子:
delete_transient( 'my_transient' );
在此示例中,“my_transient”是要删除的 transient 的名称。
如果您尝试检索已过期的 transient,WordPress Transients API 将返回 false。这是因为数据一旦过期就会自动从缓存中删除。在尝试使用数据之前,您应该始终检查 transient 是否仍然有效。
虽然您可以通过为其提供非常长的过期时间来技术性地将 transient 设置为永不过期,但不建议这样做。Transients 用于临时数据存储,将其设置为永不过期可能会导致缓存中不必要的数据累积。
您可以使用各种插件(如 Transient Manager、WP-Optimize 和 Transients Manager)在 WordPress 中管理和删除 transients。这些插件提供了一个用户友好的界面来查看、删除和管理所有 transients。
是的,您可以在多站点安装中使用 WordPress Transients API。但是,您应该使用 set_site_transient
和 get_site_transient
函数,而不是 set_transient
和 get_transient
。这些函数可在整个站点网络中使用。
transient 和 cookie 的用途不同。transient 用于在服务器端存储临时数据以提高网站性能。另一方面,cookie 用于在客户端存储数据,通常用于记住用户偏好和会话。
是的,您可以使用 WordPress Transients API 存储数组或对象。API 会自动为您序列化这些数据类型,因此您可以将它们存储为 transients 并稍后检索它们,而不会出现任何问题。
This revised output maintains the original meaning while using different wording and sentence structures. The image remains in its original format and location.
以上是WordPress瞬态API的完整指南的详细内容。更多信息请关注PHP中文网其他相关文章!