0

0

WordPress Web应用开发指南:可用功能详解(第7部分):缓存技术

WBOY

WBOY

发布时间:2023-08-30 12:37:02

|

1004人浏览过

|

来源于php中文网

原创

wordpress web应用开发指南:可用功能详解(第7部分):缓存技术

在构建 Web 应用程序时,我们必须时刻注意的最重要的事情之一就是性能。

正如他们所说,性能是一项功能。

无论您是设计师、开发人员还是用户,您都会直观地知道这一点:在应用程序方面,我们讨厌等待。当事情执行得不够快,或者我们必须等待比我们认为应该等待的时间更长的时间时,我们会感到沮丧。

为此,大多数现代 Web 开发框架都可以通过使用某些 API 来实现某种类型的缓存,而 WordPress(尽管是一个基础)也不例外。

因此,当我们继续讨论为什么 WordPress 是作为 Web 应用程序开发基础的可行选择时,我们将了解核心应用程序提供的 API、它们的工作原理以及我们如何利用它们来发挥我们的优势,以及如何通过额外的缓存插件进一步提高性能。


为什么缓存很重要?

简而言之,缓存很重要,因为它允许我们将经常检索的数据存储在内存中的某个位置,以便可以快速检索。

当您从更大的范围来看时,当多个用户查看一个网站时,这一点变得越来越明显。我的意思是,如果一个人(或极少数人)访问一个网站,并且该网站将其数据存储在数据库中,那么每次加载页面时,都必须从该网站检索该信息。数据库,插入到页面中,然后返回给用户。

如果建立了一定级别的缓存,则不必频繁地调用数据库。相反,可以从内存中的某个区域提取信息,从而加快检索速度,从而加快页面加载时间。

我们将在本文后面详细介绍这方面的技术细节。

插件怎么样?

如果您已经使用 WordPress 很长时间,那么您可能熟悉许多可用的缓存插件。

这些无疑是加速网站和/或 Web 应用程序速度的绝佳解决方案,但它确实提出了一个问题:如果可以使用插件来执行此操作,那么我们为什么要担心它?

当然,这是一个有效的问题,但插件只能自己完成这么多工作。

开发人员可以以这样的方式构建他们的应用程序,使它们不仅在没有缓存机制的情况下表现良好,而且还可以通过所述缓存插件得到极大的增强。

我的意思是,这些缓存插件会查找主题和应用程序要存储在某个位置的数据,如果我们可以在自己的工作上下文中以编程方式执行此操作,那么这些插件将产生更大的效果性能。

在了解了可用的 API 后,我们将在本文后面重新讨论此主题,看看它们如何提高缓存插件的性能。


瞬态 API

为了在应用程序中引入第一级缓存,我们需要利用 WordPress 的 Transients API。首先,请注意瞬态的官方定义是“仅存在很短时间的事物。”

正如食品法典中的定义:

[Transient API] 提供了一种简单且标准化的方法,通过为其指定自定义名称和时间范围(在该时间范围之后数据将过期并被删除),将缓存数据临时存储在数据库中。

但这到底是什么意思呢?毕竟,数据仍然存储在数据库中,那么为什么这比将数据存储在任何其他数据库表(例如 wp_options 表?)中更好呢?

一旦我们重新审视有关缓存和插件的讨论,我们将更详细地讨论这个问题。

设置瞬态

设置瞬态值实际上非常简单,就像在选项表中存储数据一样。

具体来说,您需要一个唯一标识数据的键值,然后需要一个与该键关联的值。您还需要一个过期时间(以秒为单位)来在刷新表之前将数据保留在表中。

假设我们希望将当前用户的名称存储为网站上最后一个或最近活跃的用户。我们可以利用 wp_get_current_user() 函数来做到这一点。

首先,我们将设置如下值:

set_transient( 'most_recent_user', wp_get_current_user()->user_login, 12 * HOUR_IN_SECONDS )

在这里,请注意以下几点:

  • 我将系统中最近的用户识别为当前登录的用户,并且我们会将其存储 12 小时。
  • 请注意,HOUR_IN_SECONDS 常量是 WordPress 3.5 中引入的。此处提供了完整的常量列表。

尽管这就是我们设置瞬态的方式,但这仍然无法解释我们如何管理瞬态(如果瞬态不存在或已存在)。

我们将在本文后面详细介绍这一点。

检索瞬态

当涉及到检索瞬态时,它与检索元数据或选项等内容非常相似。我的意思是,我们只需要知道检索信息的密钥即可。

因此,为了与上面的示例保持一致,我们可以通过以下调用检索应用程序的最新用户:

超会AI
超会AI

AI驱动的爆款内容制造机

下载

get_transient('most_recent_user');

这显然会返回您存储的任何类型的信息,或者如果瞬态已过期(即已经过去超过 12 小时),则该函数将返回 FALSE 的布尔值.

这是要记住的关键,特别是当您尝试读取缓存值,然后需要从另一个数据源获取它们(如果它们在临时存储中不可用)时。

我们将在本文结束之前看一下执行此操作的完整示例。

删除瞬态

最后,如果您需要删除瞬态以将其完全删除,或者在其定义的到期之前将其删除以便将其替换为另一个值,那么您只需使用以下函数:

delete_transient('most_recent_user');

此外,如果临时值删除不成功,该函数将返回 FALSE;否则,它将返回 FALSE

即将到期的瞬态

在设置缓存值的过期时间时,有多种方法可以使设置值比音乐基本整数操作更容易。

例如,MINUTE_IN_SECONDS 比 60 更容易使用,尤其是在乘以分钟、小时或天时。

从 WordPress 3.5 开始,核心应用程序中添加了几个常量,使这些计算更易于阅读。

即:

  • MINUTE_IN_SECONDS
  • HOUR_IN_SECONDS
  • DAY_IN_SECONDS
  • WEEK_IN_SECONDS
  • YEAR_IN_SECONDS

更容易使用、阅读和编写,不是吗?


使用瞬态的完整示例

此时,我认为重要的是要了解如何从在选项表中存储值开始设置瞬态。

以下是我们执行此操作的顺序:

  1. 我们将在 wp_options 表中保存一个选项。
  2. 接下来,我们将检查缓存中是否存在该值。
  3. 如果该值确实存在于缓存中,我们将删除它;否则,我们将添加它。

然后,在代码的后半部分,我们将执行以下操作:

  1. 我们将尝试从缓存中检索值函数。
  2. 如果该值存在于缓存中,我们将回退到选项表;但是,如果该值确实存在,那么我们将使用它。

话虽如此,让我们看一下:

$username = wp_get_current_user()->user_name;
add_option( 'most_recent_user', $username );

// Check to see if the value exists in the cache
if ( FALSE !== get_transient( 'most_recent_user' ) ) {

	// If it does, we'll delete it...
	if( delete_transient( 'most_recent_user' ) ) {

		// ...and store the most recent user for a maximum of one minute
		set_transient( 'most_recent_user', MINUTE_IN_SECONDS );

	} else {
		// The deletion was unsuccessful, so log the error
	}

}

// Now try to read the value from the cache.
if ( FALSE !== ( $username = get_transient( 'most_recent_user' ) ) {

	// Since it doesn't exist, then we'll read it from the option's table
	$username = get_option( 'most_recent_user' );

	// And then we'll update the cache
	set_transient( 'most_recent_user', $username, MINUTE_IN_SECONDS );

}

请注意,这个示例并不完整 - 它可以重构得更清晰一些,并且代码应该抽象为与应用程序更相关的函数,但此代码的目的是展示如何处理条件逻辑、选项和瞬态。


这如何与插件配合?

现在,综上所述,我们可以重新审视如何使用瞬态来提高插件性能的问题。

正如我们之前提到的:

在了解了可用的 API 后,我们将在本文后面重新讨论此主题,以了解它们如何增强缓存插件的性能。

块引用>

话虽如此,缓存和 WordPress 数据库与数据库中数据的位置有关。

由于瞬态数据存储在与其他数据不同的位置,因此插件(例如基于 memcached 的插件)将查找存储瞬态数据的数据,然后将数据从该位置加载到内存中。

因此,当请求数据时,将从内存中检索数据。如果数据不存在,则会从数据库中检索。

最重要的是,如果编程正确,当从缓存中读取数据失败并从数据库中检索数据时,会将其插回缓存中,以便下次检索时将其插入到缓存中。内存中可用。

最后,关于瞬态信息需要注意的关键一点是它有一个有效期。这意味着数据只会在数据库的该区域中存储特定的时间。

为此,我们需要考虑到这一点。这意味着每当我们想要检索瞬态时,我们都需要确保它们存在。如果没有,我们会将它们从所在位置拉出,然后将它们存储在正确的位置。


自定义查询

至此,我们已经介绍了 WordPress 提供的许多与 Web 应用程序开发基础相关的功能。

但是我们还有最后一个主要组件要介绍,那就是如何处理自定义查询。

当然,有一些很棒的 AP​​I,因为它与运行专为 WordPress 特定目的而设计的查询相关,例如 WP_QueryWP_User_Query,但我们还将了解一些允许我们编写的本机工具使用定义的 WordPress 对象以及允许正确数据清理的方法对数据库进行自定义查询。

但我们将在下一篇文章中介绍所有这些内容以及更多内容。

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

115

2025.12.24

拼豆图纸在线生成器
拼豆图纸在线生成器

拼豆图纸生成器有PixelBeads在线版、BeadGen和“豆图快转”;推荐通过pixelbeads.online或搜索“beadgen free online”直达官网,避开需注册的诱导页面。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

82

2025.12.24

俄罗斯搜索引擎yandex官方入口地址(最新版)
俄罗斯搜索引擎yandex官方入口地址(最新版)

Yandex官方入口网址是https://yandex.com。用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

546

2025.12.24

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

150

2025.12.24

php框架基础知识汇总
php框架基础知识汇总

php框架是构建web应用程序的架构,提供工具和功能,以简化开发过程。选择合适的框架取决于项目需求和技能水平。实战案例展示了使用laravel构建博客的步骤,包括安装、创建模型、定义路由、编写控制器和呈现视图。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

20

2025.12.24

Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

47

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

7

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

12

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

371

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号