阿里云CDN刷新预热接口-黑科技

一般追求体验和速度的网站都会使用CDN技术,下面就说一下常用的阿里云CDN,但是CDN就不可避免的需要去刷新指定文件或者文件夹的缓存,但阿里云后台的管理员账号密码不是一般人能访问的,手动刷新效率也很低,所以往往需要项目里可以直接刷新CDN缓存。

阿里云官方文档

阿里云CDN刷新预热接口-黑科技

你以为就这一点点参数就可以了吗?你们可以看看这位仁兄写的代码

这位兄弟写的代码

官方的调用方式

为什么那位仁兄写这么多代码呢,主要是为了这些公共参数,阿里云为了规范和验证请求合法性,肯定会给你一大堆验证,所以肯定需要多重验证,那为什么我敢说我的实现是黑科技呢?主要是代码少,容易理解,废话不多说,下面教你如何实现快速实现后台刷新阿里云CDN接口。

因为公司服务器部署在阿里云上,能很快的访问阿里云服务器,所以直接用阿里云的maven私服,直接去下载jar包,当然你也可以先下载好上传到自己公司私服上。阿里云私服

附上贼快的阿里云maven仓库

<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
<repositories><!-- 代码库 -->
        <repository>
            <id>maven-ali</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public//</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </snapshots>
        </repository>
    </repositories>
这个是阿里云文档的配置,用哪个都行
<repositories>
        <repository>
            <id>sonatype-nexus-staging</id>
            <name>Sonatype Nexus Staging</name>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-cdn</artifactId>
    <version>2.0.1</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>3.0.8</version>
</dependency>

黑科技就在下载的这两个包里,接着你只写上下面那段代码就可以调用刷新CDN缓存了

package com.galaxy.wgroup.common.utils;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.cdn.model.v20141111.RefreshObjectCachesRequest;
import com.aliyuncs.cdn.model.v20141111.RefreshObjectCachesResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

/**
 * Created by fengyiming on 2016/9/20.
 */
public class AliyunCdnUtlis {

    //阿里云管理员账号给你生成的key和value
    private final static String ACCESS_KEY_ID = "YOUR_KEY";

    private final static String ACCESS_KEY_VALUE = "YOUR_KEY_VALUE";

    private final static String OBJECT_TYPE_FILE = "File";

    private final static String OBJECT_TYPE_DIRECTORY = "Directory";

    /**
     * 刷新一个文件
     * @param url
     * @return
     */
    public static RefreshObjectCachesResponse reflushFileCDN(String url) {
        RefreshObjectCachesRequest describe = new RefreshObjectCachesRequest();
        describe.setObjectPath(url);
        describe.setObjectType(OBJECT_TYPE_FILE);
        return reflush(describe);
    }

    /**
     * 刷新文件夹
     * @param packageUrl
     * @return
     */
    public static RefreshObjectCachesResponse reflushPackageCDN(String packageUrl) {
        RefreshObjectCachesRequest describe = new RefreshObjectCachesRequest();
        describe.setObjectPath(packageUrl);
        describe.setObjectType(OBJECT_TYPE_DIRECTORY);
        return reflush(describe);
    }

    private static RefreshObjectCachesResponse reflush(RefreshObjectCachesRequest describe){
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESS_KEY_ID, ACCESS_KEY_VALUE);
        IAcsClient client = new DefaultAcsClient(profile);
        try {
            RefreshObjectCachesResponse response
                    = client.getAcsResponse(describe);
            return response;
        } catch (ClientException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

是不是很方便,当然刷CDN你得注意阿里云后台设置要正确,不然光能在阿里云后台看到刷新请求单没起作用。

记得当初公司网站的CDN回源比例特别高,跟运维调查了很久,有时候还得去提个工单问问专业的人如何设置阿里云CDN缓存。

上一篇:【转】浏览器加载渲染网页过程解析--总结(三)


下一篇:MySQL 事务与锁机制