如何诊断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的问题