又拍云(Upyun)CDN、云存储刷新链接缓存,API实例讲解

soゝso 2019-07-20 19:55:00 4141

当页面内容发生了更新,CDN需要刷新缓存才能看到更新的内容,本站使用的是又拍云(upyun)做CDN及云存储,看过几次API,没怎么看懂所以一直手动刷新,这次尝试了下调用又拍云API刷新,测试成功后分享下。

又拍云刷新API文档说明

当源站的资源发生变更后,可以调用该 API 接口告知又拍云刷新缓存,缓存更新后,用户访问时会获取到更新后的资源。

特别地,使用又拍云存储会在资源变更后,自动刷新缓存,省去使用自主源站缓存刷新这一步。

API地址:

http://purge.upyun.com/purge/

请求说明:

curl -X POST \
    http://purge.upyun.com/purge/ \
    -H "Authorization: <your_authorization>" \
    -H "Date: <date>" \
    -F purge=<url-list>

Authorization 算法

其中,请求头部的 Authorization 的头部签名算法如下所示:

  1. 将需要刷新的文件 URL(以 http:// 开头) 以 \n 为间隔符连接
  2. 将第 1 步所得字符串、空间名、日期(GMT 格式)、经过 MD5 处理后的操作员密码用 &拼接
  3. 将第 2 步所得字符串进行 MD5 编码处理,所得记为 sign,
  4. 最后,将空间名,操作员名和第 3 步所得的 sign 以如下格式作为请求头参数传递:Authorization: UpYun ::

另外,需将待刷新的 URL 列表在以换行符 \n 连接后以表单字段 purge 随请求发送。

上面是又拍云的描述,我的感觉就是这个接口比较简单,但是 Authorization 算法有点不清不楚,那下面我用Java代码来实现一遍,其他语言结合代码中的注释做调整。

缓存刷新Java实现代码


/**
 * 刷新缓存
 * @param filePath 需要刷新的URL链接数组
 */
public  void flush(String[] filePath){
    //date GMT 格式
    String date = getGMTDate();

    //需要刷新的URL,以 \n 间隔
    String urls = String.join("\n", filePath);
    //空间名称  CDN或者云存储 --> 域名管理 的 服务名称
    String bucketName = "空间名称";

    //操作员名称:  CDN或者云存储 --> 功能配置 --> 回源管理:最下面有操作员
    String operator = "操作员名称";
    //对应操作员的密码
    String password = "操作员的密码";

    //拼接签名参数,以"&"间隔
    String signStr = String.format("%s&%s&%s&%s",urls,bucketName,date,MathUtil.getMD5(password));


    String sign = String.format("UpYun %s:%s:%s",
                        bucketName,
                            operator,
                                MathUtil.getMD5(signStr));
Http http = Http.create("http://purge.upyun.com/purge/") //签名 .head("Authorization", sign) //GMT格式时间,和签名里是一致的 .head("Date", date) //需要刷新的URL,和签名里是一致的 .body("purge", urls) //POST请求 .post() .send(); //输出返回 System.out.println(http.getResponse().getResult()); }

备注:

md5请替换成您的  MD5  方法。

Http  工具类是我自己封装的,您自己用其他的  Http  请求,只要注意一个 Authorization  和 GMT格式的date。purge是以“\n”间隔的URL地址。

接口状态返回值

状态码 说明
200 json 格式的字符串{invalid_domain_of_url:不属于自己域名的 url 列表}
401 无认证头部信息(Authorization)(提示信息:Need Authorization Header)
401 无认证头部信息(Date)(提示信息:Need Date Header)
401 操作员不存在(提示信息:User is not exists)
401 空间名不存在(提示信息:Bucket is not exists)
401 请求时间超出 30 分钟(提示信息:Date offset error)
401 签名错误(提示信息:Sign error)
406 每分钟刷新 URL 个数超过 600 限制


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/338.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
Upyun刷新CDN存储缓存 —JavaAPI
Java 集成阿里消息队列,日志消息存储
SOJSON 使用又 CDN 整体架构,解决百度 SEO 方案
Redis缓存淘汰算法,LRU算法,LRU算法讲解
Shiro + EHCache 缓存的使用。
阿里和腾讯哪个好?
查询任意一个域名是否是阿里备案接入 API
阿里DNS 解析讲解,SEO配置搜索引擎线路解析
SpringBoot 集成Spring-data-redis,redis对象序列化存储
腾讯代金券 10000 元/ 30000 代金券领取技巧
最新文章
使用七牛云存储实现图片API,自动删除图片方案合集 729
神速ICP备案经验分享,ICP备案居然一天就通过了 1956
百度加强推送URL链接,百度SEO强行推送链接JavaScript代码案例讲解。 2771
SOJSON 拓展服务器被DDos攻击了一晚上,是如何解决的? 3049
湖南地区备案“新增网站需提交组网方案或解释说明”,关于备案做简单叙述 3116
企查查你是个什么企业,骗子的帮凶,诈骗的集中营,通过企查查骚扰企业电话不断,为所欲为的企查查 9223
Java爬取百度云观测对网站的检测数据,获取子域名及域名的安全信息 2462
【2020年】百度搜索词获取,获取百度搜索的关键词【真实有效】 6593
Nodejs环境安装,Nodejs环境安装一篇就够了 1695
iOS版淘宝打开提示“您使用的程序是内测版本,将于2020-03-28到期,到期将无法使用,请尽快下载最新版本” 2470
最热文章
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 427262
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 415867
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 349143
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 305035
免费天气API,天气JSON API,不限次数获取十五天的天气预报 283686
Elasticsearch教程(四) elasticsearch head 插件安装和使用 218845
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 173131
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 135161
Elasticsearch教程(一),全程直播(小白级别) 118379
Elasticsearch教程(五) elasticsearch Mapping的创建 98294

骚码加入我们 / 千人QQ群:259217951

入群需要5元为的是没有垃圾广告,如果没有QQ钱包,可以加群主拉进。

二维码生成 来自 >> 二维码生成器

支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...