官网:https://wordpress.org/plugins/heartbeat-control/
文档:https://www.elementpack.pro/how-to-optimize-wordpress-admin-ajax-php/
原文:https://www.affde.com/zh-CN/wordpress-ajax.html
AJAX 是一种用于网站开发的流行技术,它允许您从后端检索数据并刷新视图,而无需重新加载网页。 因此,它可以帮助您提高网站的交互性、速度和可用性。 每次您执行诸如发表评论或发布推文之类的操作时,AJAX 都会起作用。
在本文中,我将告诉您什么是 AJAX 以及如何在 WordPress(也称为 WP AJAX)中使用 AJAX。 让我们继续阅读!
- 什么是 AJAX?
- AJAX 是如何工作的?
- 如何在 WordPress 中使用 AJAX?
- 插件如何重载 admin-ajax.php?
- 加速 WordPress 仪表板
- 检测使用 Heartbeat API 的插件
什么是 AJAX?
AJAX 代表 Asynchronous JavaScript And XML,该技术允许您异步向服务器发出请求,并对我们的页面进行更改,而无需重新加载它们。 AJAX 脚本请求服务器返回一些数据,然后用获得的数据修改网页。
例如,假设有一个下拉菜单,您可以在其中选择约会日期,而另一个下拉列表会动态显示可供您预订的小时数。 通过脚本,服务器已被询问可用于选择治疗下拉列表的小时数。
AJAX 是如何工作的?
AJAX 的使命是充当您的网站和服务器之间的桥梁。 这种异步技术的核心是 XMLHttpRequest 对象,它允许数据交换。 这些是进行 AJAX 调用的基本步骤:
– 资料来源:W3Schools
- 指定要发送的信息
- 设置通话
- 使用 XMLHttpRequest 对象发送数据
- 接收并处理来自服务器的响应
好消息是这个过程可以使用 jQuery 库来简化。
如何在 WordPress 中使用 AJAX?
WordPress 原生支持 AJAX。 您可以在 wp-admin 文件夹中看到“admin-ajax.php”。
它最初是为所有从 WordPress 管理员发出 AJAX 请求的功能创建的。 它也用于网络的公共部分。
所有 WordPress AJAX 请求都必须通过 PHP 脚本。 换句话说,admin-ajax.php 应该是 PHP 文件,通过它调用返回内容的操作。
早在 2013 年,WordPress 就推出了 WordPress Heartbeat API,该 API 提供了多项重要功能,例如自动保存功能、登录到期和在其他用户编写或编辑 WordPress 帖子时发布锁定警告。
Heartbeat API 的两个非常突出的特性是:
1.自动保存
当您保存帖子草稿或继续处理它时,WordPress 会自动保存更改。 自动保存和手动保存草稿之间有明显的区别。 查看以下显示两种类型保存的屏幕截图:
– 在 WordPress 中自动保存
2. 后锁
当您尝试编辑其他用户已经在处理的帖子时,会出现有关该情况的弹出警告。 您可以看到三个操作。
– 在 WordPress 中发布锁定
由于 WordPress Heartbeat API 在服务器和浏览器之间创建连接以进行适当的通信和响应,因此上述功能成为可能。
WordPress Heartbeat API 生成与服务器通信的请求,并在接收数据/响应时触发事件。 这通常会增加服务器的负载并最终减慢 WordPress 管理员的速度。
一个活生生的例子
我登录我的 WordPress 仪表板并开始起草帖子。 接下来,我将该选项卡打开几分钟,然后开始浏览其他选项卡。 仪表板仍处于登录状态,您可以看到 admin-ajax 不断发送请求。
– admin-ajax.php 向服务器发送请求
根据上面提到的票证,WordPress 中的 admin-ajax.php 每 15 秒生成一次请求。 请求可以是与服务器的任何通信。
插件如何重载 admin-ajax.php?
WordPress 中 admin-ajax.php 中的大多数问题都可以归因于安装的插件发出的请求。 这些插件通过发送请求以获取特定功能,例如触发弹出窗口或更新社交共享计数器,从而使 WordPress 管理员变慢。
也就是说,请求不一定会增加 admin-ajax.php 文件。 如果请求得到正确处理,并且插件开发人员遵循在他们的插件中使用 AJAX 调用的最佳实践,那么 admin-ajax.php 文件就可以了。 因此,在停用任何插件之前对其进行诊断也很重要。
如何诊断 WordPress 中的插件?
正确诊断插件很重要,以确定它对 admin-ajax.php 文件的影响,这可能会降低 WordPress 管理员的速度。 为此,我们将使用两个工具:GTmetrix 和 WebPageTest。
在 GTmetrix 的情况下,导航到它的 Waterfall 选项卡以获取完整的请求列表。 仔细查看列表后,您可以看到 admin-ajax.php 文件发出的 POST 请求。
– WordPress 中的插件诊断
就我而言,这些请求主要是由社交共享插件发出的。 这个特定的插件每 15 秒通过 API 向社交媒体帐户发送一个 ajax 请求,以获取更新的共享计数。
展开选项卡以获取详细信息。 响应选项卡显示触发这些请求的确切位置。
Chrome 附带开发人员工具,可以帮助分析各种插件发出的请求。 要检查这一点,请在 Chrome 中打开网站,单击 CTRL + Shift + I,然后单击网络选项卡。
– Chrome 中的 admix-ajax.php 请求
重新加载页面并查看使用更新请求填充的列表。 在过滤器框中,输入 ajax 或 admin-ajax 来过滤需要的文件。 这使您可以深入了解请求的数量及其频率和请求的来源。
接下来,单击该文件以查看更多信息。 在响应选项卡中,它为您提供了导致此请求的插件的一些提示。 就我而言,这次它是由 WP 流行插件 (WPP) 触发的,该插件可以突出显示特定时间段内最受欢迎的帖子。
为避免这种情况,请确保您使用的插件已更新。 如果不是,请尝试打开支持票,以便其开发人员可以解决问题。 如果可能,您还可以将其替换为另一个已更新且不会使 admin-ajax.php 文件过载的插件。
在摆脱任何插件之前进行彻底的诊断很重要,因为某些插件对您的 WordPress 网站至关重要。 这些工具可以帮助您找到根本原因并选择最佳解决方案来修复它。
在下一节中,我们将看到如何减少这些请求并防止 admin-ajax.php 文件过载。
加速 WordPress 仪表板
要加速 WordPress 后端,最好的方法是禁用 Heartbeat API,或者至少设置更长的时间间隔,使其不会每隔几秒钟就访问服务器。
安装心跳控制插件
– 心跳控制插件
登录到您的 WordPress 管理仪表板。 导航到插件 → 添加新。 搜索心跳控制。 安装并激活它。
– 在 WordPress 中安装心跳控制
配置心跳控制插件
导航到设置 → 心跳控制设置。 在那里您会找到三个用于配置插件的下拉菜单。
1. 允许心跳
您可以选择 Heartbeat API 将起作用的区域。 有以下三个选项可供选择:
- WordPress 仪表板:这将为WordPress 仪表板启用 Heartbeat API。
- 前端:这将在前端启用 API。
- 帖子编辑器:如果要允许在自动保存和帖子锁定功能上启用 Heartbeat API,请选中此复选框。
– 允许心跳控制心跳
2. 禁用心跳
如果您希望 WordPress Heartbeat API 禁用特定位置,请选择此项。 选择位置时要小心,因为其他插件也可能使用 WordPress Heartbeat API。 如果您是 WordPress 后端的唯一用户,我建议您在任何地方禁用它,然后检查它是否会破坏网站。
但是,如果您的站点有多个定期投稿的用户,我建议您仅在帖子编辑页面上允许 Heartbeat API。
– 在心跳控制中禁用心跳
3.修改心跳
此下拉菜单允许您设置时间间隔,范围从 0 到 300 秒以执行 admin-ajax 请求。 通过将其设置为 120 秒,将在每 120 秒后生成一次请求。 这将大大减少服务器上的负载。 根据您的需要进行调整。
– 在心跳控制中修改心跳
创建多个规则
您可以根据自己的要求创建多个规则。 例如,您可能希望 WordPress Dashboard 在 120 秒内触发,但 Post Editor 在 60 秒内触发。 为此,您需要创建两个规则:一个用于 WordPress 仪表板,另一个用于帖子编辑器。 将它们的频率分别设置为 120 和 60。
检测使用 Heartbeat API 的插件
现在您已经设置了所有内容,是时候检查哪些插件正在使用 admin-ajax.php 文件并降低了网站速度。
转到 GTmetrix 并输入您站点的 URL。 分析该站点需要一些时间。 完成后,导航到 Waterfall 选项卡,您将看到文件连接和响应所需的时间。 向下滚动一点,看看是否有 POST admin-ajax.php 的条目。 如果是,请展开它并导航到“发布”选项卡。 从这里,您可以确定罪魁祸首插件。
在我的例子中,插件“桌面开关”正在使用 admin-ajax.php 文件并不断向服务器发送请求。 现在是做出决定的时候了; 要么用另一个插件替换它,要么交叉手指。
– POST admin-ajax.php
概括
考虑到其功能集,Heartbeat API 在您的 WordPress 网站上非常有用。 但是,如果使用不当,它会通过来回发送 WordPress Ajax 请求来增加 WordPress 后端和前端的加载时间。
这个问题只有两种解决方案。 您可以禁用 Heartbeat API/仅在几个位置启用它 – 或者 – 升级到可以处理请求负载并减少服务器响应时间的托管主机。