我正在开发WordPress插件,并且在使用REST API时遇到性能问题。我注册了一条路由,如下所示(类中的代码):
public function __construct()
{
add_action('rest_api_init', array($this, 'register_rest_load'));
add_action('admin_enqueue_scripts', array($this, 'enqueue_scripts'));
}
public function register_rest_load()
{
//Versioned namespace
$namespace = 'scs/v1';
// Register the route
register_rest_route($namespace, '/load/(?P<id>\d+)', array(
'methods' => WP_REST_Server::ALLMETHODS,
'callback' => array($this,'loadProfile'),
'args' => array()
));
}
函数“ loadProfile”遍历了一个加载脚本,该脚本在从其他数据库中收集数据时将xhr消息返回到前端ajax。由于这是完美的工作方式,因此我将不在此处包括。我在这里面临的问题是,如果我对[
进行多次ajax调用“ my-url.de/wp-json/scs/v1/load/[any_int_here]”
同时,它每次仅提供1个ajax调用。但是它发生了,因此“ loadProfile”功能需要3分钟才能运行。当我从自己的硬编码直接称为ajax(可能同时调用6个)更改为更安全的WordPress REST(仅1个调用)时,我失去了性能。我也尝试了WordPress ajax,但是那里也一样……只提供1次。
我有什么办法弄乱创建路由和端点吗?我可以针对每个客户将其路线和终点修改为多份吗?还是我应该回到手动Ajax?
谢谢。如果我缺少任何信息,请随时提问。
由于是PHP,因此您无法进行多线程处理。您将无法同时向同一个客户提供多个呼叫。
但是过去我做了一些丑陋的修改来克服这个问题,您可以创建多个指向相同服务器,具有相同文档根目录的子域。
Ex:
http://api1.test.com \
http://api2.test.com - /var/www/htdocs/wp-api
// ..... /
http://apiN.test.com /
通过这种方式,您可以根据需要发出异步请求(当然,每个请求到不同的子域),或者至少可以处理多少服务器。