PHP又拍云云存储刷新缓存实例

当你存储在UPYUN云存储上的资源发生变更时,用户访问可能显示的还是旧内容,这是因为又拍云缓存的内容并未更新。此时,你可以到又拍云控制台手动去刷新资源,但这太过麻烦;另一种方法,通过又拍云提供的API进行刷新,该方法高效、迅速,可以实现实时刷新缓存。

一、介绍

官方说明文档:点击这里

详细介绍,这里就不赘述了,官方文档说明的非常清楚。需要注意一下,许多站长容易把CDN和云存储搞混,网上也有大把的文章混淆了CDN和云存储,搞得新手站长晕头转向。给大家推荐一个又拍云官方出的视频 新手指南:如何快速入门 CDN,里面有云存储、CDN的介绍及两者的异同之处,看了之后会让你眼前一亮。

二、代码部署

代码中需要填写云存储服务名操作员名称操作员密码要刷新的文件地址

<?php
class UpYun {
    // SDK 版本
    const VERSION = '2.0';
    const AUTHORIZATION = 'Authorization:';
    const DATE = 'Date:';
    // 缓存刷新接口
    const PURGE_API = 'http://purge.upyun.com/purge/';
    private $_bucketname;
    private $_username;
    private $_password;
    // 获取当前 SDK 版本号
    public function version() {
        return self::VERSION;
    }
    // 初始化 UpYun 接口
    public function __construct($bucketname, $username, $password) {
        $this->_bucketname = $bucketname;
        $this->_username = $username;
        $this->_password = md5($password);
    }
    // 刷新缓存
    public function purge($url) {
        $date = gmdate('D, d M Y H:i:s GMT');
        $sign = md5("{$url}&{$this->_bucketname}&{$date}&{$this->_password}");
        $ch = curl_init(self::PURGE_API);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            self::AUTHORIZATION . " UpYun {$this->_bucketname}:{$this->_username}:{$sign}",
            self::DATE . $date
        ));
        curl_setopt($ch, CURLOPT_POSTFIELDS, "purge=" . urlencode($url));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($ch);
        $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if ($code != 200) {
            echo var_export($result, 1);
        }
        else {
            echo var_export($code . ' 刷新成功 ' . $result);
        }
        curl_close($ch);
    }
}

$upyun = new UpYun('云存储服务名', '操作员名称', '操作员密码');
$url = "要刷新的文件地址";
$upyun->purge($url);
?>

三、效果检测

正式将代码部署前,先在php测试环境中运行一下,看看响应代码是不是200,官方也提供了各种响应状态的解释。

评论

Your email address will not be published. Required fields are marked *

Scroll Up