如何诊断WordPress站点过度使用Admin-Ajax的问题

温馨提示:注册会员付费购买资源可永久免费下载更新版本

Ajax是一种基于JavaScript的Web技术,可以帮助你构建动态的、交互式的网站。WordPress使用Ajax来支持它的许多核心管理区域功能,比如自动文章保存、用户会话管理和通知。

默认情况下,WordPress通过位于site /wp-admin目录中的admin-ajax.php文件引导所有Ajax调用。

大量并发的Ajax请求可能会导致高admin-ajax.php使用率,这将大大降低服务器和网站的速度。这是许多未经优化的WordPress网站面临的最常见的问题之一。通常表现为网速慢或者HTTP 5xx错误(主要是504或者502错误)。

在这篇文章中,你将了解WordPress的admin-ajax.php文件,它的工作原理,它的优点和缺点,以及如何诊断和修复高admin-ajax.php使用率的问题。

什么是admin-ajax.php文件?

如何诊断admin-ajax.php在WordPress上的高频使用问题

什么是admin-ajax.php文件?

admin-ajax.php文件包含了在WordPress上路由Ajax请求的所有代码。它的主要目的是使用Ajax在客户机和服务器之间建立连接。WordPress使用它来刷新页面内容,而无需重新加载,从而使其动态化并与用户互动。

管理Ajax如何在WordPress上工作的基本概述

由于WordPress核心已经使用Ajax来支持其各种后端功能,您可以使用相同的功能在WordPress上使用Ajax。您所需要做的就是注册一个操作,将它指向您站点的admin-ajax.php文件,并定义您希望它如何返回值。你可以设置它返回HTML,JSON甚至XML。

WordPress中的Admin-ajax.php文件

根据WordPress Trac,admin-ajax.php文件最早出现在WordPress 2.1中。在WordPress开发社区中,它也被称为AJAXAMIN。

检查Ajax的使用

上面的图表只显示了来自admin-ajax.php的请求数量,而没有显示它们可能来自哪里。这是查看峰值出现时间的好方法。您可以将它与本文中提到的其他技术结合起来,以缩小主要原因的范围。

检查Chrome DevTools中admin-ajax.php请求的数量。

你也可以使用Chrome DevTools来检查有多少请求被发送到admin-ajax.php。您还可以查看“网络”部分下的“计时”选项卡,了解处理这些请求所需的时间。

至于admin-ajax.php高使用率背后的确切原因,主要有两个:前端和后端。我们将在下面讨论这两个问题。

如何在WordPress上诊断admin-ajax.php高频使用的问题

第三方插件是admin-ajax.php使用率高的最常见原因之一。通常这个问题会出现在站点前端,经常出现在测速报告中。

但插件并不是这里唯一的罪魁祸首,因为主题、WordPress核心、web服务器和DDoS攻击也可能是Admin Ajax使用率高的原因。

让我们更详细地探索它们。

如何确定插件和主题高admin-ajax.php使用率的来源?

WordPress.org插件库中的Ajax驱动插件

WordPress开发者经常使用Ajax来创建动态的、交互式的插件和主题。一些流行的例子包括添加功能,如实时搜索,产品过滤,无限滚动,动态购物车和聊天框。

插件使用Ajax并不意味着它会降低你网站的速度。

在WebPageTest报告中查看admin-ajax.php请求

通常,管理Ajax在页面加载结束时加载。此外,您可以将Ajax请求设置为异步加载,因此它对用户感知的页面性能几乎没有影响。

正如您在上面的WebPageTest报告中看到的,admin-ajax.php在请求队列的末尾加载,但是仍然需要780毫秒。仅仅一个请求就要花很多时间。

GTmetrix报告显示,admin-ajax.php的使用量激增。

当开发者没有在WordPress上正确实现Ajax时,可能会导致严重的性能问题。上面的GTmetrix报告是这种行为的一个完美例子。

您还可以使用GTmetrix来挖掘单个文章和回复数据。您可以使用此功能找出问题的原因。

为此,请转到GTmetrix报告的“瀑布”选项卡,然后找到并单击“发布admin-ajax.php”项目。您将看到该请求的三个标签:标题、帖子和回复。

admin-ajax.php要求的标题数据

查看请求的Post和Response选项卡,为您提供一些提示,找出性能问题背后的原因。对于这个网站,你可以在“回复”标签中看到线索。

admin-ajax.php请求的响应数据

您可以看到响应的一部分与输入标记相关,该标记的id设置为“fusion-form-nonce-656”。

快速搜索这个主题会把你带到ThemeFusion的网站,Avada主题的创建者。因此,您可以断定请求来自主题,或者与主题捆绑在一起的任何插件。

在这种情况下,您必须首先确保Avada主题及其所有相关插件已经完全更新。如果这不能解决问题,那么你可以尝试禁用主题,看看它是否能解决问题。

与禁用插件不同,禁用主题在大多数情况下是不可行的。因此,尝试优化主题以消除任何瓶颈。也可以联系主题的支持团队,看他们能不能拿出更好的解决方案。

在GTmetrix中测试另一个速度较慢的网站时,Visual Composer页面生成器和通知栏插件也出现了类似的问题。

另一个后admin-ajax.php请求的响应数据

admin-ajax.php要求的邮政数据

幸运的是,如果你不能解决插件的问题,你喜欢有许多替代插件来尝试。比如说到页面构建器,你也可以尝试使用Beaver Builder或者Elementor。

如何确定admin-ajax.php高利用率的来源

有时候,测速报告中显示的帖子和回复数据可能不是那么清晰直接。在这里,不容易找到高admin-ajax.php使用率的来源。在这种情况下,你总是可以用老办法。

禁用您网站的所有插件,清除您网站的缓存(如果有),然后再次运行速度测试。如果admin-ajax.php仍然存在,那么最有可能的罪魁祸首就是主题。但是如果找不到,那么你就要逐个激活每个插件,每次都要运行速度测试。通过消除过程,你将锁定问题的根源。

使用admin-ajax.php诊断后端服务器问题

admin-ajax.php使用率高的第二个最常见的原因是WordPress Heartbeat API生成频繁的Ajax调用,导致服务器上的高CPU使用率。通常,这是由许多用户登录WordPress后端dashboard造成的。因此,在速度测试中你不会看到这一点。

默认情况下,Heartbeat API的admin-ajax.php每15秒轮询一次文件,以自动保存文章或页面。如果你使用共享的主机服务器,你的站点没有多少专用的服务器资源。如果您正在编辑一篇文章或一个页面,并且长时间打开标签页,可能会生成大量的管理Ajax请求。

比如你写或者编辑一篇文章,仅仅一个用户一个小时就能产生240个请求!

经常自动保存admin-ajax.php请求。

后端有很多请求,只有一个用户。现在想象一个站点,有多个编辑同时登录。这类网站会迅速增加Ajax请求,导致CPU利用率很高。

DARTDRones在扩展其WooCommerce网站以出现在Shark Tank上时实际上遇到了这个问题。

他们的admin-ajax.php一天之内接到了4100多个电话,只有2000个独立访客。这是一个弱请求访问比率。

Admin-ajax.php在dartdrones.com被广泛使用。

我们注意到/wp-admin引用了URL并正确地确定了根本原因。这些请求是因为DARTDRones的管理员和编辑经常更新网站,以期待节目的播出。

WordPress在很久以前就部分修复了这个心跳API问题。例如,您可以在资源有限的主机上减少Heartbeat API生成请求的频率。它还会在键盘/鼠标/触摸一小时不活动后暂停。

使用心跳控制插件减少Ajax请求

使用WP Rocket的心跳控制插件就可以轻松解决这个问题。它允许您只需几次点击就可以禁用或修改心跳API的频率。

心跳控制插件

安装并激活心跳控制插件后,你可以在WordPress仪表盘、站点前端和文章编辑器上管理心跳API的频率。

心跳控制插件的常规设置仪表板

如果你的服务器CPU资源有限,我建议你在WordPress仪表盘和前端都禁用Heartbeat。还可以修改文章编辑器选项的心跳频率,增加到30秒(甚至60秒)。频率越高,节省的服务器资源就越多。

您必须使用的确切设置因站点而异。如果您不确定使用什么,可以咨询您的Web开发人员。

DDoS攻击或垃圾邮件机器人导致的高流量

用DDoS攻击或垃圾邮件机器人淹没您的网站也会导致高admin-ajax.php使用率。然而,这种攻击不一定是针对不断增加的管理Ajax请求。这只是附带损害。

如果你的站点被DDoS攻击,你的首要任务应该是把它放在一个强大的CDN/WAF后面,比如Cloudflare或者Sucuri。

要了解如何保护您的网站免受此类恶意攻击,您可以参考我们关于如何阻止DDoS攻击的深入指南。

总结

WordPress在其Heartbeat API中使用Ajax来实现许多核心功能。但是,如果使用不当,可能会导致加载时间增加。这通常是由文件请求的高频率引起的admin-ajax.php。

在本文中,您了解了高admin-ajax.php使用率的各种原因,如何诊断这种症状的原因以及如何修复它。在大多数情况下,遵循这个指南应该能够使您的网站立即恢复并顺利运行。

但是,在某些情况下,升级到具有更高资源的服务器是唯一可行的解决方案。尤其是对于要求苛刻的用例,比如电商、会员制网站。如果你正在运行这样一个网站,请考虑升级到一个托管的WordPress主机,该主机在处理这些类型的性能问题方面很有经验。

声明:

1,本站分享的资源来源于用户上传或网络分享,如有侵权请联系站长。

2,本站软件分享目的仅供大家学习和交流,请不要用于商业用途,下载后请于24小时后删除。

3,如果你也有好的建站资源,可以投稿到本站。

4,本站提供的所有资源不包含技术服务请大家谅解!

5,如有链接无法下载,请联系站长!

6,特别声明:仅供参考学习,不提供技术支持,建议购买正版!如果发布资源侵犯了您的利益请留言告知!


创网站长资源网 » 如何诊断WordPress站点过度使用Admin-Ajax的问题