由于本站(Eswink技术学习)已经接入了百度小程序(Eswink小伍学习),并且使用了百度小程序官方给出的云加速服务,CloudCache即云缓存,每当Eswink发布了新的内容就需要刷新,否则小程序将不会显示最新的内容。所以决定创建一个云函数用于刷新云缓存

云函数编写

我选择使用PHP来编写云函数,当然你也可以选择python或者go甚至node

本次云函数分为两个方法,main_handlerget_token,前者为初始化方法,便于API网关运行,后者用于获取百度开发者的access_token

获取开发者access_token

function get_token(){
    $appid = "小程序 appid";
    $secret = "小程序 app secret";
    $r = file_get_contents("https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=".$appid."&client_secret=".$secret."&scope=smartapp_snsapi_base");
    $data = json_decode($r,true);
    $access_token = $data['access_token'];
    return json_encode($access_token);
}

正常执行会返回字符串类型的access_token,失败则会返回错误。

请求刷新云缓存

function main_handler($event, $context) {
    $appid = "小程序 appid";
    $access_token = get_token();
    $api = file_get_contents("https://openapi.baidu.com/rest/2.0/smartapp/storage/component/reset?appkey=".$appid."&access_token=".$access_token);
    $post = json_decode($api,true);
    return json_encode($post);
}

请求成功会返回带有successjson,失败的话则会显示错误代码和其他。

API网关部署

我这里将云函数配置为API网关触发,如果你有其他需要,可以创建其他触发器。如果有不懂API网关部署的,可以去看我前面的文章:「API接口上云|Serverless云函数服务部署实战」

部署完毕后,再将调用函数添加到主题的文件中,或者你就设置每天定时触发云缓存刷新,不过这种方法对于你的服务器的要求还是比较高,如果是学生机或者低配机器建议还是手动刷新缓存。