[七牛,API] 批量刷新缓存

Hi,今天随便写篇关于 七牛-刷新缓存 的文章
在使用七牛融合CDN时,会遇到需要刷新缓存的时候
平时可以在界面上提交刷新请求(https://portal.qiniu.com/cdn/refresh-prefetch
那么用SDK怎么刷新缓存呢?

题目:
给一个文件,文件有1000行,每行一个URL,URL可能会重复。
请实现一个DEMO,完成刷新请求。
要求每次请求尽量包含100个URL。

data.txt

http://aaaaa.qiniuts.com/000.txt
http://aaaaa.qiniuts.com/001.txt
http://aaaaa.qiniuts.com/002.txt
http://aaaaa.qiniuts.com/003.txt
...

Java:
文档:https://developer.qiniu.com/kodo/sdk/1239/java#fusion-refresh-urls

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;

import com.qiniu.cdn.CdnManager;
import com.qiniu.cdn.CdnResult;
import com.qiniu.util.Auth;

public class RefreshByFile {

    public static void main(String[] args) {

        String accessKey = ""; // ak
        String secretKey = ""; // sk

        try {
            Auth auth = Auth.create(accessKey, secretKey);
            CdnManager c = new CdnManager(auth);

            File file = new File("data.txt");
            List<String[]> urlArrays = getDistinctUrlArrays(file);

            for (String[] urlArray : urlArrays) {
                CdnResult.RefreshResult result = c.refreshUrls(urlArray);
                System.out.println(result.code);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static List<String[]> getDistinctUrlArrays(File file) throws IOException {

        List<String[]> urlArrays = new ArrayList<>();

        List<String> urls = new ArrayList<>();
        Files.lines(file.toPath()).distinct()
        .forEach(url -> {
            urls.add(url);
        });

        for (int i = 0; i < urls.size(); i += 100) {
            List<String> subUrls = urls.subList(i, Math.min(i + 100, urls.size()));
            urlArrays.add(subUrls.toArray(new String[0]));
        }

        return urlArrays;
    }

}

猜你喜欢

转载自blog.csdn.net/UESTC_peterpan/article/details/81437686