我正在使用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会导致这种情况?
欢迎任何建议!
谢谢。
答案 0 :(得分:0)
为避免TTFB问题,您需要更快地完成服务器端的工作。在一个查询中获取2000个帖子似乎是一个耗时的过程。逐渐增加该值,例如20、30等