WordPress一些插件会使用 AJAX 来启动自定义的 wp_query
,在无需完整刷新页面的情况下,显示某些内容。
什么是admin-ajax?
这个请求会发送到 WordPress 的特定 AJAX 文件,以执行这类查询:
https://你的域名/wp-admin/admin-ajax.php
不过有时这些查询会拖慢我们网站的加载时间,尤其是在多个请求同时进行时。这很常见,因为许多插件都使用这种方式来更新 WordPress 页面上的元素,例如:
WooCommerce 插件就是典型案例,广泛使用 admin-ajax.php
:
- 添加商品到购物车
- 修改商品数量
- 选择商品变体
- 切换支付方式
- 输入送货地址以计算运费
- …
其他插件的使用场景:
- 在不刷新页面的情况下显示评论
- 更新评分统计
- 显示折叠菜单或手风琴效果
- 根据分类筛选加载内容
- …
admin-ajax 过度使用的影响
如果 admin-ajax.php
被大量调用,可能会导致一些不良后果:
- 整个网站加载变慢
- 服务器资源消耗过高
- 最严重的情况可能导致网站崩溃
怎么知道哪些元素在使用 ajax ?
要知道是 哪些插件、主题,甚至 WordPress 本身 在使用 admin-ajax.php
,最简单的方法是使用浏览器的开发者工具(Developer Tools),在工具栏切换到“网络”选项卡(Network),在搜索框输入 admin-ajax.php
,然后回车。

另外一种方法就是用像之前在WordPress加载速度优化里提到的那些检测网站速度的工具,像GTMetrix,不过它并不会告诉你具体是哪个东西在使用Ajax.
如何减少 admin-ajax.php 的滥用?
- 检查插件:禁用插件并检查
admin-ajax.php
的调用是否减少。如果某个插件消耗过多资源,看看它有没有设置选项可以减少 AJAX 请求。如果没有优化选项可以联系插件开发者或找替代插件,选择占用资源更少的。 - 检查主题:主题设置禁用任何不必要的动态加载功能(如无限滚动、动态内容加载等)。
- WooCommerce 优化:禁用 WooCommerce 在非必要页面的 AJAX 和 script 脚本(如非购物相关页面),禁用 AJAX 购物车碎片更新(cart fragments),这可以大幅减少
admin-ajax.php
负载。在 WooCommerce 产品设置可以选择关闭「启用 AJAX 添加到购物车按钮」,防止不必要的 AJAX 调用。 - 限制 WordPress Heartbeat API:建议完全禁用。Heartbeat API 主要用于后台自动保存草稿、同步数据等,限制其调用能减少服务器压力。
- 服务器优化(最后的选择):如果无法禁用相关插件或功能,可以升级服务器资源(提高 PHP 处理能力、增加缓存),以更好地支持 AJAX 请求。