使用瞬变缓存WP REMOTE_GET HTTP响应

时间:2020-10-12 作者:Ava Juan

使用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\' );

1 个回复
最合适的回答,由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 了解更多信息。

相关推荐

从WP-API获取类别名称而不是ID

我正在尝试获取类别name 而不是ID 来自我的自定义帖子类型的WP REST API。一些关于端点修改的文章给了我一些关于如何解决它的想法,但不幸的是,我没有让它发挥作用。这是我的代码(*删除了一些行中不相关的代码):CUSTOM POST TYPE<?php add_action( \'init\', \'portfolio_projects\' ); function portfolio_projects() { $labels