使用wp\\u remote\\u get会在每次页面加载时不断ping API。这增加了服务器资源。
是否可以缓存API的响应,使用瞬态存储它,并在接下来的5分钟内使用它,而不是每次都保持ping?
5分钟后,它应该再次发送请求并重写存储的值。
这是我的API请求代码。如何做到这一点?我是新手。请帮帮我
function display_api_response() {
$api_url = "https://randletter2020.herokuapp.com";
$response = wp_remote_get($api_url);
if ( 200 === wp_remote_retrieve_response_code($response) ) {
$body = wp_remote_retrieve_body($response);
if ( \'a\' === $body ) {
echo \'A wins\';
}else {
// Do something else.
}
}
}
add_action( \'init\', \'display_api_response\' );
最合适的回答,由SO网友:Hector 整理而成
function display_api_response() {
$body = get_transient( \'my_remote_response_value\' );
if ( false === $body ) {
$api_url = "https://randletter2020.herokuapp.com";
$response = wp_remote_get($api_url);
if (200 !== wp_remote_retrieve_response_code($response)) {
return;
}
$body = wp_remote_retrieve_body($response);
set_transient( \'my_remote_response_value\', $body, 5*MINUTE_IN_SECONDS );
}
if (\'a\' === $body) {
echo \'A wins\';
} else {
// Do something else.
}
}
add_action(\'init\', \'display_api_response\');
起初,瞬态不存在,所以我们发送一个请求并保存
$body
作为瞬态值。下次,如果瞬态存在,我们将跳过发送请求。
检查Transient Handbook 了解更多信息。