首页 > CMS教程 > &#&按 > WordPress瞬态API的完整指南

WordPress瞬态API的完整指南

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-02-17 12:19:09
原创
284 人浏览过

WordPress 的 Transients API 自 2.8 版本起就已支持,但许多 WordPress 开发者仍未意识到它的存在及其用途。简而言之,WordPress Transients API 允许我们存储具有过期时间的键值对数据。

本教程将深入讲解如何使用此 API。我们还将了解它与 Options API 的区别,它如何与 WordPress 缓存系统交互以及一些用例。

The Complete Guide to the WordPress Transients API ### 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

要设置 transient,我们需要使用 set_transient() 函数。此函数采用三个参数:

  1. Transient 名称(必需):必须是字符串。字符串长度不能超过 40 个字符,否则将无法创建 transient。
  2. Transient 值(必需):必须是字符串。如果您传递对象或数组,则会将其序列化,即转换为字符串。
  3. 过期秒数(可选):transient 将在其中过期的秒数。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_transientset_site_transient 之间的区别在于:

  1. set_site_transient 用于多站点网络时,transient 可用于网络中的所有站点。
  2. 无论是否有过期时间,使用 set_site_transient 创建的 transients 始终自动加载。

最后,如果您运行现有 transient 键的 set_transient,则值和过期时间将更新为新提供的值和过期时间。过期时间是从首次设置 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

要删除 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 的常见问题解答 (FAQ)

使用 WordPress Transients API 的主要目的是什么?

使用 WordPress Transients API 的主要目的是存储临时数据,这有助于加快 WordPress 网站的速度。它允许开发人员存储具有过期时间的 data。此数据可以是任何内容,从复杂的数据库查询结果到简单的字符串值。通过存储此数据,您的 WordPress 网站可以快速检索它,而无需每次都重新生成它,从而提高网站的性能。

WordPress Transients API 如何提高网站性能?

WordPress Transients API 通过减少数据库查询次数来提高网站性能。当使用 Transients API 存储数据时,可以从缓存中快速检索它,而无需执行新的数据库查询。这大大减少了服务器的负载并加快了页面加载时间,从而提供了更好的用户体验。

我可以将 WordPress Transients API 用于永久数据存储吗?

不可以,WordPress Transients API 不是为永久数据存储设计的。使用 Transients API 存储的数据是临时的,并且有过期时间。数据过期后,它会自动从缓存中删除。如果您需要永久存储数据,则应使用其他 WordPress API,例如 Options API。

如何在 WordPress 中删除 transient?

您可以使用 delete_transient 函数在 WordPress 中删除 transient。此函数将 transient 的名称作为其参数。这是一个例子:

delete_transient( 'my_transient' );

在此示例中,“my_transient”是要删除的 transient 的名称。

如果我尝试检索已过期的 transient 会发生什么?

如果您尝试检索已过期的 transient,WordPress Transients API 将返回 false。这是因为数据一旦过期就会自动从缓存中删除。在尝试使用数据之前,您应该始终检查 transient 是否仍然有效。

我可以将 transient 设置为永不过期吗?

虽然您可以通过为其提供非常长的过期时间来技术性地将 transient 设置为永不过期,但不建议这样做。Transients 用于临时数据存储,将其设置为永不过期可能会导致缓存中不必要的数据累积。

如何在 WordPress 中管理和删除 transients?

您可以使用各种插件(如 Transient Manager、WP-Optimize 和 Transients Manager)在 WordPress 中管理和删除 transients。这些插件提供了一个用户友好的界面来查看、删除和管理所有 transients。

我可以在多站点安装中使用 WordPress Transients API 吗?

是的,您可以在多站点安装中使用 WordPress Transients API。但是,您应该使用 set_site_transientget_site_transient 函数,而不是 set_transientget_transient。这些函数可在整个站点网络中使用。

transient 和 cookie 之间有什么区别?

transient 和 cookie 的用途不同。transient 用于在服务器端存储临时数据以提高网站性能。另一方面,cookie 用于在客户端存储数据,通常用于记住用户偏好和会话。

我可以使用 WordPress Transients API 存储数组或对象吗?

是的,您可以使用 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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板