[教程]如何使用腾讯CDN API刷新url?

图片[1]-[教程]如何使用腾讯CDN API刷新url?-月宅酱的博客


月宅说

在使用了腾讯CDN缓存“html”页面后,会出现一个问题,那就是当你评论后,刷新页面,评论就 会消失,必须去CDN控制台手动刷新url,再回来刷新这个页面,才会出现评论。但这个过程非常麻烦,为了解决这个问题,当你提交评论后,立刻进行实时刷新,确保第一时间显示回复评论。接下来是月宅带来的教程。


举个栗子

已知“6159.html”被缓存到了CDN上面,当提交后可以看见评论,但刷新后评论消失,原因是CDN上面缓存了之前的页面,并不会立马显示现在的,有可能已经缓存了1天以上。作为强迫症这点不能忍,必须解决这个问题,那么我们来编写一下实现过程。

图片[2]-[教程]如何使用腾讯CDN API刷新url?-月宅酱的博客


教程一

到这个地址获取你的SecretKey及其SecretId:https://console.cloud.tencent.com/capi先不要关闭这个页面,或者保存下这两行。

教程

新建一个php文件,名为shuaxin-cdn-url.php (刷新-CDN-url 随你叫啥..)然后往里面写入这些东西。月宅已经为你写好了。

<?php
$secretKey='复制你的KEY';
$secretId='复制进来你的ID';
/*请勿修改↓*/
$action='RefreshCdnUrl';
$PRIVATE_PARAMS = array(
                'urls.0'=> '这里是需要刷新的地址',
                );
//请求官方API地址
$HttpUrl="cdn.api.qcloud.com";
// 使用POST,无需其他的别改
$HttpMethod="POST";
$isHttps =true;
$COMMON_PARAMS = array(
                'Nonce' => rand(),
                'Timestamp' =>time(NULL),
                'Action' =>$action,
                'SecretId' => $secretId,
                );

CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps);

function CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps)
{
        $FullHttpUrl = $HttpUrl."/v2/index.php";
        $ReqParaArray = array_merge($COMMON_PARAMS, $PRIVATE_PARAMS);
        ksort($ReqParaArray);
        $SigTxt = $HttpMethod.$FullHttpUrl."?";

        $isFirst = true;
        foreach ($ReqParaArray as $key => $value)
        {
                if (!$isFirst) 
                {
                        $SigTxt = $SigTxt."&";
                }
                $isFirst= false;
                if(strpos($key, '_'))
                {
                        $key = str_replace('_', '.', $key);
                }

                $SigTxt=$SigTxt.$key."=".$value;
        }
        $Signature = base64_encode(hash_hmac('sha1', $SigTxt, $secretKey, true));
        $Req = "Signature=".urlencode($Signature);
        foreach ($ReqParaArray as $key => $value)
        {
                $Req=$Req."&".$key."=".urlencode($value);
        }
        if($HttpMethod === 'GET')
        {
                if($isHttps === true)
                {
                        $Req="https://".$FullHttpUrl."?".$Req;
                }
                else
                {
                        $Req="http://".$FullHttpUrl."?".$Req;
                }

                $Rsp = file_get_contents($Req);

        }
        else
        {
                if($isHttps === true)
                {
                        $Rsp= SendPost("https://".$FullHttpUrl,$Req,$isHttps);
                }
                else
                {
                        $Rsp= SendPost("http://".$FullHttpUrl,$Req,$isHttps);
                }
        }

        var_export(json_decode($Rsp,true));
}

function SendPost($FullHttpUrl, $Req, $isHttps)
{

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $Req);

        curl_setopt($ch, CURLOPT_URL, $FullHttpUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        if ($isHttps === true) {
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,  false);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  false);
        }

        $result = curl_exec($ch);

        return $result;
}
// 返回完成
// BY:月宅酱 ikmoe.com

结果

到这里就完了,使用WordPress的内置函数the_permalink()来传递当前url的地址,也可以使用一个输入框来直接输入地址点击刷新,这样就不用去腾讯控制台了。

图片[3]-[教程]如何使用腾讯CDN API刷新url?-月宅酱的博客

图片[4]-[教程]如何使用腾讯CDN API刷新url?-月宅酱的博客

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 共18条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容