将自定义php函数添加到Wordpress时的TTFB很长

时间:2019-06-12 11:24:52

标签: php wordpress function rest api

我正在使用Wordpress REST API创建在iOS和Android应用中显示的内容。

由于WP仅在REST API中显示10个帖子,因此我制作了一个u自定义php函数来显示更多内容,并且该代码导致TTFB时间非常长。

我联系了服务器支持部门,他们发送了尝试访问WP REST API端点时收到的错误消息

这是他们的回复:

connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("139.162.182.238")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=3, events=POLLOUT|POLLWRNORM}], 1, 299996) = 1 ([{fd=3, revents=POLLOUT|POLLWRNORM}])
getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
sendto(3, "HEAD /wp-json/wp/v2/test_odgovor"..., 200, MSG_NOSIGNAL, NULL, 0) = 200
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)

以下是我用于在REST API中显示10多个帖子的代码:

add_filter( 'rest_endpoints', function( $endpoints ){
    if ( ! isset( $endpoints['/wp/v2/test_odgovor'] ) ) {
        return $endpoints;
    }
    unset( $endpoints['/wp/v2/test_odgovor'][0]['args']['per_page'] ['maximum'] );
    return $endpoints;
});
add_filter( 'rest_endpoints', function( $endpoints ){
      if ( ! isset( $endpoints['/wp/v2/test_odgovor'] ) ) {
        return $endpoints;
      }
    $endpoints['/wp/v2/test_odgovor'][0]['args']['per_page']['default'] = 2000;
    return $endpoints;
});

是否还有其他功能可以帮助在API中显示更多WP帖子,还是应该更换服务器?

我不熟悉服务器错误,所以我不知道该怎么办。我应该在应用程序中更改代码并以不同方式加载JSON吗?

编辑-因此,似乎将Wordpress升级到版本5导致了此问题。当我将其降级到4.9时,TTFB低于4秒。有谁知道为什么较新版本的Wordpress会导致这种情况?

欢迎任何建议!

谢谢。

1 个答案:

答案 0 :(得分:0)

为避免TTFB问题,您需要更快地完成服务器端的工作。在一个查询中获取2000个帖子似乎是一个耗时的过程。逐渐增加该值,例如20、30等