月宅说
在使用了腾讯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的地址,也可以使用一个输入框来直接输入地址点击刷新,这样就不用去腾讯控制台了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容