1. 首页
  2. 网络干货

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


月宅说

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


举个栗子

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


教程一

到这个地址获取你的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.0 中国大陆许可协议》发布,转载请遵循本协议
  • 文章链接:https://ikmoe.com/6205.html [复制] (转载时请注明本文出处及文章链接)
上一篇:
:下一篇
网站正在备案,部分地区不可访问

18 条评论

gravatar

  1. 狂放 5
    正正正正

    悄悄说一句,把张戈大佬的代码换掉钩子小改一下其实就可以

    回复狂放
    1. 狂放 5
      正正正正

      @狂放 然后突然发现张戈大佬写好了

      回复狂放
    2. 月宅 7
      樱花!

      @狂放 其实直接复制腾讯官方文档的

      回复月宅
      1. 狂放 5
        正正正正

        @月宅 文档啊,晕,你水文坑小白啊

        回复狂放
        1. 月宅 7
          樱花!

          @狂放 去去去,这可是自个实践修改的

          回复月宅
        2. 月宅 7
          樱花!

          @狂放 你可以直接复制这篇的php来一发,是能够刷新的

          回复月宅
          1. 狂放 5
            正正正正

            @月宅 又不是自动的,你需要滑稽的WordPress钩子

            回复狂放
            1. 月宅 7
              樱花!

              @狂放 将这个放文章模板下,使用post的方式 另外用wp输出当前url地址

              回复月宅
              1. 狂放 5
                正正正正

                @月宅 为啥不用保存文章和发表及批准编辑评论的钩子呢233

                回复狂放
                1. 月宅 7
                  樱花!

                  @狂放 卧槽我都不知道有这个玩意,涨知识

                  回复月宅
                  1. 狂放 5
                    正正正正

                    @月宅 大佬别谦虚

                    回复狂放
                    1. 月宅 7
                      樱花!

                      @狂放 我真不知道,这还是你告诉我的

                      月宅
                2. 月宅 7
                  樱花!

                  @狂放 我发现你是个低调的大佬啊

                  回复月宅
                  1. 狂放 5
                    正正正正

                    @月宅 不不不,我是萌新真萌新

                    回复狂放
  2. luguo 2
    喜欢月宅

    签到成功!签到时间:下午8:47:20每日打卡,月宅祝你生活越过越好喔~

  3. luguo 2
    喜欢月宅

    签到成功!签到时间:下午8:46:58每日打卡,月宅祝你生活越过越好喔~

  4. Colin 2
    喜欢月宅

    大佬好

  5. 月宅 7
    樱花!

    签到成功!签到时间:下午7:46:54每日打卡,月宅祝你生活越过越好喔~

    回复月宅
当前页面评论被关闭,原因如下: