为什么我对PHP脚本/WP REST API的并发AJAX请求如此缓慢?

为什么我对PHP脚本/WP REST API的并发AJAX请求如此缓慢?,php,wordpress,performance,rest,Php,Wordpress,Performance,Rest,经过一些调查,我更新了问题的标题。请在下面查看我的更新。 原始问题: 我正在用Wordpress构建一个网站,有时使用对WP REST API端点的异步调用 从我的AJAX函数调用此端点通常会导致TTFB时间至少为780ms: 但是,如果我直接在浏览器中打开URL/端点,则TTFB时间会快4-5倍: 我不知道延误是从哪里来的。我在本地开发服务器上运行这个页面,启用了Apache2.4、HTTP/2和PHP7 监控此类性能“问题”的最佳方式是什么 请注意:我不是在使用Wordpress内置的A

经过一些调查,我更新了问题的标题。请在下面查看我的更新。

原始问题:

我正在用Wordpress构建一个网站,有时使用对WP REST API端点的异步调用

从我的AJAX函数调用此端点通常会导致TTFB时间至少为780ms:

但是,如果我直接在浏览器中打开URL/端点,则TTFB时间会快4-5倍:

我不知道延误是从哪里来的。我在本地开发服务器上运行这个页面,启用了Apache2.4、HTTP/2和PHP7

监控此类性能“问题”的最佳方式是什么

请注意:我不是在使用Wordpress内置的AJAX功能。我只是打电话给你

axios.get(`${url}/wp-json/wp/v2/flightplan`)
在我安装在主页模板中的React组件中

更新 该死的有趣:清除cookies会大大减少TTFB

更新2 删除其他两个AJAX调用后,
flightplan
请求执行得更快。我认为并发AJAX请求存在一些问题。我读过一些关于会话锁定的文章,但是由于Wordpress和所有安装的插件都没有使用会话,这不是原因

更新3 确切地说,这与我的本地服务器设置有关。刚刚将站点部署到“真实”Web服务器:

但是,了解如何设置一个能够更好地处理并发事务的服务器仍然是一件有趣的事情

更新4 我做了一个小测试:在调用“真实”请求之前调用4个虚拟请求。脚本只返回一个“Foobar”字符串。此时一切看起来都很好:

但是当向虚拟AJAX脚本添加
sleep(3)
时,所有其他请求也需要更长的时间:


为什么?

因为Ajax调用将等待加载所有WP插件:)


因此,您需要在不使用插件的情况下进行一些测试,然后逐个激活,看看哪一个会降低ajax调用的速度。

只激活了几个WP插件(Multilanguage Press、ACF、ACF to REST和Timber),所有这些插件都是正确输出REST API调用所必需的(好的,Timber旁边)。但是我不理解我的AJAX调用之间的区别,它只获取
example.com/rest/foo
的内容,直接访问
example.com/rest/foo
。只是创建了一个fiddle(在任何WP环境之外)并对端点进行了AJAX调用。与直接访问相同的速度。所以Wordpress似乎在修改/过滤/任何AJAX请求?当你在Wordpress中使用AJAX时,你需要挂钩,所以你加载所有Wordpress机制,所以肯定会比较慢。我不做任何挂钩?我只是在我的JS函数中调用
$.ajax({…})
。它只是
axios.get(`${$('meta[name=“site url”]”)。attr('content')}/wp json/wp/v2/flightplan`)