腾讯cdn api PHP刷新,WordPress代码实现发布文章时实时刷新腾讯CDN缓存

重要:本文最后更新于2019-01-11 10:41:00,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗。

我们在优化WordPress速度的时候,CDN是个不错的选择,但是在CDN缓存过期之前,我们即使更新了文章也是看不到变化的,还好腾讯CDN提供了api方式刷新缓存,我们可以使用WordPress的动作钩子,同步刷新cdn缓存,下面是WordPress代码实现发布文章时刷新腾讯CDN缓存的过程,需要的朋友试试吧。

写在前面

要实现这个发布文章时实时刷新腾讯CDN缓存功能,需要你配置了腾讯CDN缓存整个页面才行,下面我就用缓存代码狗博客首页来做例子。

获取api密匙

使用腾讯云的api需要先获取密匙,这个密匙可以使用腾讯云的所有api,并不只是cdn。获取地址:https://console.qcloud.com/cam/capi

注意:这个密匙可以操作所有腾讯云产品,注意保护密匙,别泄露了。

请求参数说明

请求方式:post或get

请求地址:https://cdn.api.qcloud.com/v2/index.php

get请求体示例:

https://cdn.api.qcloud.com/v2/index.php?

Action=RefreshCdnUrl

&SecretId=XXXXXXXXXXXXXXXXXX

&Timestamp=1462521223

&Nonce=123456789

&Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

&urls.0=https%3A%2F%2www.test.com%2F1.jpg

post请求体示例:

array (

'Action' => 'RefreshCdnUrl',

'SecretId' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX',

'Timestamp' => 1462864833,

'Nonce' => 1149033341,

'Signature' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX',

'urls.0' => 'https://www.test.com/1.jpg'

)

WordPress发布文章实时刷新cdn

在你的主题functions.php文件中加入如下代码:

//刷新方法

function refresh_txcdn_cache(){

$secretKey='key';//后台获取

$secretId='id';//后台获取

$action='RefreshCdnUrl';

//刷新地址自行修改

$PRIVATE_PARAMS = array(

'urls.0'=> 'https://www.daimadog.com/',

);

$HttpUrl="cdn.api.qcloud.com";

$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);

}

//发布文章是执行刷新函数

add_action( 'publish_post', 'refresh_txcdn_cache' );

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;

}

/*********************根据签名原文字符串 $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="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;

}

?>

将上面代码复制到你的functions.php文件中,发布一篇测试文章后,去腾讯cdn控制面板,可以看到刷新记录,如下图:

4c71d60d2d2bc4df3a7e27eeb0eb0fd7.png

WordPress代码实现发布文章时实时刷新腾讯CDN缓存

注意:上面我用的文章发布动作执行刷新函数,你可以改成你想要的,比如保存文章、更新文章、新评论等等。

add_action( 'publish_post', 'refresh_txcdn_cache' );

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值