1. 程式人生 > >阿里雲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快取。