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

本站使用WordPress 博客系统,腾讯云CDN+云解析 ,为追求速度,全站静态缓存。

但在发布和更新文章、提交及审核评论后,CDN缓存导致首页不能及时显示更新,在张戈博客发现了这段“自动清理腾讯云CDN缓存”的代码,马上用上——网络高手们确实多啊。

完整的 php 代码如下:

/**
* WordPress 发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存(首页和当前文章) By 张戈博客
* 文章地址:https://zhangge.net/5089.html
* 转载请保留出处,谢谢合作!
**/

/* 需要填写你的密钥,访问 https://console.qcloud.com/capi 获取 SecretId 及 $secretKey */
$secretKey = '此处填写SECRET_KEY';
$secretId  = '此处填写SECRET_ID';

//更新或发布文章清理本文和首页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' => home_url(),
                    '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="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));
        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;

先访问 腾讯云的 API 密钥 创建或获取你在腾讯云的 API 密钥:

然后正确替换上述代码中的8,9行的 secretKey 和 secretId 值,比如:

/* 需要填写你的密钥,访问 https://console.qcloud.com/capi 获取 SecretId 及 $secretKey */
$secretKey = 'ABCD123CSDFSBSDFDSF';
$secretId  = 'CDAABBBSDFA683N23423N4';

部署后,博客发布或更新文章、评论的提交或审核都会调用 API 去清理 CDN 缓存,其中文章和评论的提交可能会比没有部署略微卡一点,评论的审核是异步提交,所以感知不到什么。

推荐百度网盘

百度网盘,是百度公司推出的一项提供用户Web、PC、Android手机客户端多平台数据共享的云存储服务。该服务依托于百度强大的云存储集群机制,发挥了百度强有力的云端存储优势,提供超大的网络存储空间,拥有更强大的数据安全保障,并且提供了把精彩内容轻松分享给好友的通道。目前需要邀请才能开通使用,分享邀请码数枚,给需要的朋友~

特色功能:

1.大容量存储空间
无需完成任务,注册即可获得15GB超大存储空间,空间免费无上限。新注册成功,就获得了15GB超大免费存储空间,而且还可以不断扩容,没有上限。

2.多平台数据共享
支持Web,PC,Android手机客户端等多个平台,进行跨平台、跨终端的文件共享,随时随地访问。用户上传的文件都会保存在云端,在访问文件时,无论登录哪个平台都可以访问到所有平台存储的文件;存储随意,访问方便。

3.文件分类浏览
自动对用户文件进行分类,浏览查找更方便。按照用户存储的文件类型对用户上传文件进行自动分类,极大方便了用户浏览以及对文件的管理,独具特色。

4. 超大单文件快速上传,无限速、少约束
百度网盘Web版支持最大1GB 单文件上传,PC客户端最大支持4GB单文件上传,上传不限速;可进行批量操作,轻松便利。网路速度有多快上传速度就有多快。同时,还可以批量操作上传,方便实用。上传文件时,自动将要上传的文件与云端资源库进行匹配,如果匹配成功,则可以秒传,最大限度节省您的上传时间。

5.离线下载,下载文件无需等待
只需输入你需要下载的文件链接,服务器将自动帮你下载到网盘中。最大限度节省用户将文件存至网盘的时间。

6.数据安全
百度强大的云存储集群,是目前最具优势的存储机制,提供了完善高效的服务:高效的云端存储速度,以及稳定可靠的数据安全。完善的文件访问控制机制,提供了必备的数据安全屏障。依托百度大规模可靠存储,一份文件多份备份,防范一切意外。数据传输加密,有效防止数据窃取。

7.轻松好友分享
轻松进行文件及文件夹的分享,支持短信和邮件两种分享方式,让你的好友和你一起High起来。好友分享时,设有相应的提取码,只有输入相应的提取码才能访问分享的文件,有效确保了隐私安全。

大家可以通过 us.xiyy.us 访问我的百度网盘地址,看看我收集的软件,呵呵。祝你开心

Dropbox免费赠送23G容量

Dropbox容量一直都是大家关注的事情,经常有人组队刷Dropbox,不过今天你就不用组队了,因为Dropbox免费赠送23G容量。要求你 有一个Android手机~~网上说是HTC的才行,我摩托罗拉里程碑2和朋友的三星平板都测试成功~~

如何获取23G空间

1、准备工作:

      安卓系统手机一部(可以刷无限个号),可以上网,并且可以“帆樯”

2、删除你手机上安装的Dropbox~~接下来安装下面这个版本的Dropbox~~~

      http://dl.dropbox.com/u/15143971/Dropbox-23GB.apk

3、安装即可,等待增加容量吧~~接下来将收到确认邮件~~~

DropPages 打造專屬個人網站

应香肠要求,这里删除文章,喜欢Dropbox的朋友可以到香肠的空间去查看(顺便告诉香肠:咱是你的忠实粉丝哦)http://sofree.cc/droppages/
Dropbox是目前網路上非常知名的雲端儲存服務,除了可以透過DropTunes化身成為雲端音樂平台,現在還 可以透過DropPages,讓這個好用的雲端空間變成您的個人網站,不必再去申請有廣告的免費Hinet網頁空間,現在只要四個步驟,輕鬆讓您擁有個人 網站,讓建置網站不再是一件困難的事情。

一般來說,架設一個網站需要找空間和網址,有了前兩者後,接著就是撰寫HTML,這樣才有辦法產出一個網頁,當然網頁做好後,還要透過FTP將您製 作好的網頁上傳,多數使用者其實搞不太懂FTP是什麼?常常在這邊弄錯,因而感覺網站架設是一件很困難且複雜的事情,讓許多人對於網站架設卻步,但現在其 實不用擔心了,網路上其實有很多快速架站的替代方案,只要幾個步驟就可以完成網站架設的動作。

想要透過DropPage快速打造個人網站,首先必須要有個帳 號,接著需要在電腦內安裝Dropbox同步軟體,最後即可透過DropPages輕鬆擁有自己的個人網頁,網址和空間通通包辦在裡面,還有免費的網頁模 板可以下載,你只要負責提供內容,網站就可以輕鬆完成了。如果想要不一樣,可以按照DropPages的模板架構,自行修改CSS或是自己開發模板,就可 以擁有一個與眾不同的個人網頁。做法非常簡單,官方上提到只要四個步驟,個人網站就可以完成。

  • 網站名稱:DropPage
  • 網站網址:http://droppages.com/

网站整合

鉴于自己懒散和不上进的心态,我打算在网络和网站问题上收心。

1 、删除www.xiyy.ca域名,有看得上的童鞋等它到期了自己去捡。当然,我也可以无偿提供给你使用(请自备dns)

2、 www.xiyy.info(喜气洋洋笑话博客)内容全部并入anntgg.com(本站)

3 、xiyy.info(喜气洋洋影视系统)使用国内备案空间,速度暴快,但一直只做电影站。这次补充www.xiyy.info为网络高清电视直播,使用新浪服务器,相信你能喜欢

4 、保留www.99fd.com(沸点中文网)全手打网络小说,喜欢小说的朋友有福了!当然推荐你使用手机访问wap.99fd.com,小说够新速度够快

5  、www.xiyy.in(喜气洋洋小说搜索网)访问量一直不错,用它可查找多家网络最新小说,我很喜欢,hope you too!

6 、www.xiyy.cc绑在点点网台湾服务器上,分享些可爱之事,就像备了个好QQ号一样留着给女儿吧。当然还有个二级域名转向了小瑞的相册,地址就不公开了吧?

7 、www.xiyy.us亦为“喜气洋洋影音系统”,但访问量不大。很怀恋以前用来做flash游戏网的日子,跟老婆一起“连连看”所向披靡,看到这里的网友推荐个游戏程序吧

突然发现我还有xiyy.tk等免费域名,手上攒了“喜气洋洋”家族了!恐怖

申请重庆网警备案

向来此检查的公安同志问好,祝你快乐健康!

作为一个合格的网民,我诚实守信,待人真诚,孝敬父母,信守诺言,爱护公共设施,不随地吐痰,不乱扔瓜子皮,五讲四美三热爱,不交女性网友,不看色情内容,不发政治言论,写博客无敏感词,网站已备案,完完全全地响应党中央、国务院“全力建设和谐社会”的号召。

敬请广大网友放心!

隆重介绍我的主机提供商——圆通主机

你知道我不做seo,不宣传主机域名。但今天为“圆通主机”破个例,跟他们管理员“刹那芳菲”关系不错,更重要的是:他们主机真的不错。恭喜看到此文的你,本文末有惊喜哦!

在快递行业,圆通的口碑是很不错的,我家周蒲一个月都要网上购物几十回,基本是圆通寄过来宝贝。今天我推介的这个主机,就是以圆通命名。

【推荐理由】价格相当便宜,速度相当优秀,服务相当给力,国人IDC沟通不成问题!

我的两个站喜气洋洋小说搜索网喜气洋洋flash游戏网 都使用了圆通主机,两个月了基本没出现过宕机情况,ping值一般都在220以内,且无掉包!不错吧?

圆通主机由他们租用的独立服务器构建的,并非转售其他空间的虚拟空间,虚拟主机免费提供正版DirectAdmin或者Cpanel中文控制面板,让你能够容易的管理你的虚拟主机。他们的服务器均放置与世界一流的AAA级机房,如Los Angeles CA,Kansas,Fremont等数据中心,是您值得放心托付的。

“我们拥有自己的机器,并非其他IDC的代理,出问题时我们可以尽快解决,非一些普通空间代理所能比的.您在技术问题服务单无论在任何时段内提出,我们都将在您提出问题的最长4小时内响应。”

【围观地址】圆通主机官网

【探针测试】http://www.xiyy.in/tz.php

【新优惠码】2011xbgk (6折!听说失效了?你试试先)

Off20Forever(终身20%优惠,绝对可用)

需要空间的朋友可以去看看,做个博客,100MB已经够用了,花少少的钱,买一个商业主机,省心。圆通主机还提供了备份服务,这也为您的数据安全加上了一层保障。

建议你买个标准型,像我一样做两个站,花6,7十个大洋买个放心,祝你好运

热烈庆祝“喜气洋洋”谷歌PR3

打开chinaz看看喜气洋洋博客的一些情况和数据.

让我意想不到的是谷歌PR竟然更新到3了. 着实给了我惊啊. 当然现在心情那是相当的兴奋.

小小博客不做seo,(除非自己用)也不介绍域名免空,写写Ann、Tgg和杨柠瑞三口之家的点滴故事,写写老公老婆各式各样的心情杂记,能被谷歌百度大肆收录已然让我意外,这次冲刺PR3成功更是让俺觉得不可思议

不管怎么说,建站也有1年了,就算对自己努力的一点回报,给我继续记录的动力

PR值我不会在意,我在意我们的健康幸福和快乐

祝福

修改sourceforge.net(sf.net)空间权限并解决数据库问题

方法一:使用工具WinSCP

正确的做法是,把htdocs删除,可以在persistent文件夹下面创建www的文件夹给这个文件夹所有的权限(当然也可以直接将persistent重命名为htdocs,不过有一个缺憾就是persistent文件夹并没有写入权限,其子目录才有。以防再更改子目录的权限我们可以请再往下看)

创建好www文件后,右键选择将路径复制到剪切板。后退到/home/groups/x/xx/xxx(x代表你的目录)文件夹下。空白处右键选择新建——连接,在连接/快捷方式文件处填写htdocs,下面为建立连接/快捷方式到我们直接将刚才复制的路径粘贴到这里然后点确认就可以了。

注意之前我们已经删除了htdocs文件夹。 目前htdocs文件夹访问的连接则变成了/home/persistent/x/xx/xxxx/www 而www这个文件夹是有权限的。

方法二:使用FTP软件 如Flashfxp

将现有htdocs文件夹删除后把快捷方式persistent更名为htdocs。这个方法来的最快也是最有效的办法。

方法三:利用SSH用ln命令来完成

但是做起非常麻烦,这里只为快建有效做站,为了避免更多的麻烦我们没必要去深入学习它,也不多做介绍,用以上两种方法就可以了。