WordPress配置腾讯云CDN并实现发布/更新文章/提交/评论自动清理腾讯云CDN缓存

配置腾讯云CDN

  • 注册腾讯云账号开通CDN,开通之后开通域名,新用户还送流量包,可以根据自己的需求选择套餐。

回源配置:

  • 由于我使用的是腾讯云的服务器,好像支持什么Range回源配置,源站类型我选择自主回源,源站地址就填写服务器ip。

WordPress配置腾讯云CDN并实现发布/更新文章/提交/评论自动清理腾讯云CDN缓存

缓存配置

  • 主要是缓存静态内容,缓存时间我设置的7天。
  • 不缓存,后台/wp-admin;登录页面/wp-login.php;静态文件.php;.jsp;.asp;.aspx
  • 其他的都设置缓存

WordPress配置腾讯云CDN并实现发布/更新文章/提交/评论自动清理腾讯云CDN缓存

发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存

  • 把下边的代码放到当前主题functions.php中(替换代码里的SecretId 及 $secretKey
    /* 需要填写你的密钥,访问 https://console.qcloud.com/capi 获取 SecretId 及 $secretKey */
    $secretKey = '你的secretKey ';
    $secretId = '你的SecretId ';
    //更新或发布文章清理本文和首页CDN缓存
    add_action('publish_post', 'Clean_By_Publish', 0);
    //提交评论更新本文CDN缓存
    add_action('comment_post', 'Clean_By_Comments',0);
    //评论被审核更新本文CDN缓存
    add_action('comment_unapproved_to_approved', 'Clean_By_Approved',0);
    //发布文章更新CDN缓存函数
    function Clean_By_Publish($post_ID){
    global $secretKey,$secretId;
    $url = get_permalink($post_ID);
    $action='RefreshCdnUrl';
    /*要清理的页面,默认包含首页和文章页面,需要清理其他页面请自行发挥*/
    $PRIVATE_PARAMS = array(
    'urls.0' => 'https://www.zmki.cn/', /*提交首页刷新,修改成自己的网站首页*/
    'urls.1' => $url ,
    );
    $HttpUrl="cdn.api.qcloud.com";
    /*除非有特殊说明,如MultipartUploadVodFile,其它接口都支持GET及POST*/
    $HttpMethod="POST";
    /*是否https协议,大部分接口都必须为https,只有少部分接口除外(如MultipartUploadVodFile)*/
    $isHttps =true;
    /*下面这五个参数为所有接口的 公共参数;对于某些接口没有地域概念,则不用传递Region(如DescribeDeals)*/
    $COMMON_PARAMS = array(
    'Nonce' => rand(),
    'Timestamp' =>time(NULL),
    'Action' =>$action,
    'SecretId' => $secretId,
    );
    /***********************************************************************************/
    CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps);
    }
    //提交评论清理文章CDN函数
    function Clean_By_Comments($comment_id)
    {
    global $secretKey,$secretId;
    $comment = get_comment($comment_id);
    $url = get_permalink($comment->comment_post_ID);
    $action='RefreshCdnUrl';
    /*参数*/
    $PRIVATE_PARAMS = array(
    'urls.0' => $url,
    );
    $HttpUrl="cdn.api.qcloud.com";
    /*除非有特殊说明,如MultipartUploadVodFile,其它接口都支持GET及POST*/
    $HttpMethod="POST";
    /*是否https协议,大部分接口都必须为https,只有少部分接口除外(如MultipartUploadVodFile)*/
    $isHttps =true;
    /*下面这五个参数为所有接口的 公共参数;对于某些接口没有地域概念,则不用传递Region(如DescribeDeals)*/
    $COMMON_PARAMS = array(
    'Nonce' => rand(),
    'Timestamp' =>time(NULL),
    'Action' =>$action,
    'SecretId' => $secretId,
    );
    /***********************************************************************************/
    CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps);
    }
    //评论被审核清理CDN缓存函数
    function Clean_By_Approved($comment)
    {
    global $secretKey,$secretId;
    $url = get_permalink($comment->comment_post_ID);
    $action='RefreshCdnUrl';
    /*参数*/
    $PRIVATE_PARAMS = array(
    'urls.0' => $url,
    );
    $HttpUrl="cdn.api.qcloud.com";
    /*除非有特殊说明,如MultipartUploadVodFile,其它接口都支持GET及POST*/
    $HttpMethod="POST";
    /*是否https协议,大部分接口都必须为https,只有少部分接口除外(如MultipartUploadVodFile)*/
    $isHttps =true;
    /*下面这五个参数为所有接口的 公共参数;对于某些接口没有地域概念,则不用传递Region(如DescribeDeals)*/
    $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);
    /**********************************生成签名原文**********************************
    * 将 请求方法, URI地址,及排序好的请求参数 按照下面格式 拼接在一起, 生成签名原文,此请求中的原文为
    * GETcvm.api.qcloud.com/v2/index.php?Action=DescribeInstances&Nonce=345122&Region=gz
    * &SecretId=AKIDz8krbsJ5yKBZQ ·1pn74WFkmLPx3gnPhESA&Timestamp=1408704141
    * &instanceIds.0=qcvm12345&instanceIds.1=qcvm56789
    * ****************************************************************************/
    $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;
    }
    /*********************根据签名原文字符串 $SigTxt,生成签名 Signature******************/
    $Signature = base64_encode(hash_hmac('sha1', $SigTxt, $secretKey, true));
    /***************拼接请求串,对于请求参数及签名,需要进行urlencode编码********************/
    $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="https://".$FullHttpUrl."?".$Req;
    }
    $Rsp = file_get_contents($Req);
    }
    else
    {
    if($isHttps === true)
    {
    $Rsp= SendPost("https://".$FullHttpUrl,$Req,$isHttps);
    }
    else
    {
    $Rsp= SendPost("https://".$FullHttpUrl,$Req,$isHttps);
    }
    }
    //var_export(json_decode($Rsp,true));
    return 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, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1 );
    if ($isHttps === true) {
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    }
    $result = curl_exec($ch);
    return $result;
    }
    //腾讯云cdn缓存刷新配置结束
    
  • API密匙获取:https://console.qcloud.com/capi
  • 在CDN控制台能查到缓存刷新记录这说明配置成功

WordPress配置腾讯云CDN并实现发布/更新文章/提交/评论自动清理腾讯云CDN缓存

  • ps.经博主测试,PHP7.3不能提交, PHP7.2及以下的版本可以使用。如果不能提交请切换PHP版本
实用教程

推荐两个极致压缩图片站点

2020-1-14 3:09:36

实用教程

阿里云CDN配置全站加速详细图文教程

2020-1-14 23:22:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
有新私信 私信列表
搜索