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;
}
}