由于七牛提供的文档不怎么好懂(有的功能根本在api中在不到答案),另外百度搜索的答案也不尽如意。折腾了两天,终于搞懂了通过调用七牛提供的API去刷新缓存!!

场景:APP中关于帮助说明原先都是写死的html静态文件,每次更改内容都是直接去服务器去改,很不方便也不安全,然后现在想通过后台去维护这些数据,而我们公司使用的就是七牛来管理文件的。所以现在的需求就是:①、通过后台使用七牛来管理这些文件;②、app不做任何更改。

1、通过后台使用七牛来管理文件。参考官网api,地址:http://developer.qiniu.com/code/v7/sdk/java.html。

2、既然App不做任何更改,所以需要做到覆盖上传。在实际开发时,发现覆盖能成功覆盖文件内容,但是缓存那是相当的严重!本来可以通过在访问地址后台带上随机的参数可以获取最新的文件内容,但是违背了“app不做任何更改”的原则。最后发现可以通过七牛提供的api去刷新缓存:

private static final String MAC_NAME = "HmacSHA1";
private static final String ENCODING = "UTF-8";/*** 刷新七牛缓存* * @param url* @param params* @param codePage* @return* @throws Exception*/
public synchronized static String postDataByAuthorization(String url, String jsonString, String codePage)throws Exception {HttpPost method = new HttpPost(url);// 设置请求和传输超时时间RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(200 * 1000).setConnectTimeout(200 * 1000).build();method.setConfig(requestConfig);// Authorization值为 "QBox <ak>:<token>"method.addHeader("Authorization", "QBox " + QiniuUtil.ACCESS_KEY + ":" + getTokenOfQiniu());method.setHeader("Content-type", "application/json; charset=utf-8");method.setHeader("Accept", "application/json");method.setEntity(new StringEntity(jsonString, Charset.forName(codePage)));CloseableHttpClient httpClient = HttpClientBuilder.create().build();HttpResponse response = httpClient.execute(method);return EntityUtils.toString(response.getEntity());
}/*** 获取七牛缓存刷新的token* * @return* @throws Exception*/
private static String getTokenOfQiniu() throws Exception {byte[] sign = hmacSHA1Encrypt("/v2/tune/refresh\n", QiniuUtil.SECRET_KEY);String encodedSign = EncodeUtils.urlsafeEncodeString(sign);return encodedSign;
}/*** 使用 HMAC-SHA1 签名方法对对encryptText进行签名* * @param encryptText 被签名的字符串* @param encryptKey 密钥* @return* @throws Exception*/
public static byte[] hmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception {byte[] data = encryptKey.getBytes(ENCODING);// 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称SecretKey secretKey = new SecretKeySpec(data, MAC_NAME);// 生成一个指定 Mac 算法 的 Mac 对象Mac mac = Mac.getInstance(MAC_NAME);// 用给定密钥初始化 Mac 对象mac.init(secretKey);byte[] text = encryptText.getBytes(ENCODING);// 完成 Mac 操作return mac.doFinal(text);
}</span>

说明:

1、在刷新缓存过程中,主要是token大家不知道怎么生成,也是我费时最多的!可以参考我上面生成token的代码,也可以参考官网通过shell命令生成token(地址:http://developer.qiniu.com/article/fusion/api/refresh.html#refresh-request-message);

2、遗憾的是,通过api去刷新缓存也不是实时的,还是会有大概10分钟左右的缓存时间,不过总比一直缓存这强......我也是醉了。

好了最后总结,如果不想被缓存这么,可以在生成文件的时候,传入随机的key,这样访问的地址就不固定了,也就不会出现缓存问题;如果访问url必须固定,可以在url地址后加上随机参数(例如v=20160921154089881212);如果不能增加参数,想我遇到的这种情况一样的,就像我这样调用api就好了。

Java 七牛缓存刷新相关推荐

  1. java七牛获取访问路径_七牛回调及回调鉴权

    概述 客户上传文件到七牛后,七牛服务器会响应 200 状态码,响应内容包括 hash 和 key .但是如果客户需要自定义响应内容,则可以通过设置回调来实现. 回调实现 客户端需要在上传 token ...

  2. java上传文件到七牛_java 上传文件到七牛云

    com.qiniu qiniu-java-sdk dependency> //java上传流文件,二进制流文件 //java 七牛上传 @RequestMapping("/file&q ...

  3. java七牛云图片压缩_七牛云 CDN 历史图片批量压缩

    背景 最近七牛云 CDN 的流量有点吃不消了,后台看了下统计,发现有好多图片文件特别大,最大的单个文件能到 10M 多 .所以就想做一下图片瘦身处理,官方自带的瘦身试了下效果一般,所以就不如自动动手了 ...

  4. html cdn不缓存,【前端开发日常 - 6】七牛CDN上的网页缓存问题及HTML禁止缓存(续)...

    需求背景 紧接着之前的内容[前端开发日常 - 5]七牛CDN上的网页缓存问题及HTML禁止缓存. 由于七牛CDN无法通过设置对单独的文件修改,而只能通过对 bucket 的统一设置修改 max-age ...

  5. 七牛 回调 java_七牛回调验证(java,php源码)

    1,七牛的客户可以对七牛回调过来的信息做验证.防止其他网站的信息冒充七牛. 2,安全性 *由于回调地址是公网可任意访问的,回调服务如何确认一次回调是合法的呢? 七牛云存储在回调时会对请求数据签名,并将 ...

  6. 七牛 java 加水印_图片水印处理(watermark)

    注意: watermark 接口支持的最大 gif 帧数为 200,超过 200,处理结果只返回原图. 图片水印 接口规格 注意: 接口规格不含任何空格与换行符. watermark/1 /image ...

  7. html访问java接口出现缓存_一个牛逼的多级缓存实现方案

    点击上方"java进阶架构师",选择右上角"置顶公众号" 20大进阶架构专题每日送达 TMC,即"透明多级缓存(Transparent Multile ...

  8. 七牛 java 加水印_七牛云图片加水印

    目标:用户登录进平台后,他看到的所有图片都要以他的用户名加上水印. 1.首先说下七牛加水印的方法,首先附上官网地址: https://developer.qiniu.com/dora/manual/1 ...

  9. java对接七牛后台进行内容审核(鉴黄、敏感人物、暴恐)

    关于七牛内容审核的介绍 在七牛的控制台找到智能多媒体 接下来找到智能内容审核,可以看到一些审核数据情况,主要包含:鉴黄.暴恐.敏感人物 另外看一下API接口说明: 查看地址是:https://deve ...

最新文章

  1. 求非线性方程组的最小二乘解的广义逆法C实现
  2. 中国有超3亿人存在睡眠障碍 收入越高睡眠越少
  3. 官方文档翻译-ESP32-SPI Flash
  4. php两个数组去掉相同的,php如何删除两个数组中相同的数据
  5. 【转】Rhythm Of The Rain 雨的旋律
  6. .NET Framework是什么
  7. 设计模式-04-行为型模式详解
  8. VS2012旗舰版下载地址和安装密钥
  9. 服务器 cpu 修改vt,虚拟机安装mac必看:Intel CPU虚拟技术VT-x支持列表
  10. python-将图片存储到pdf中
  11. 双路cpu比单路强多少_关于CPU单核单路/双路和双核双路的区别
  12. 乐优商城之后台管理系统
  13. python函数中变量LEGB原则
  14. 转载:Android Studio 快捷键
  15. 教师资格证计算机专业考什么内容,计算机教师资格证需要考什么?信息技术教师资格证考试内容...
  16. 计算机怎么关屏幕,电脑双屏怎么关闭一个显示器 电脑关闭双屏的具体步骤
  17. 洛谷B2065 鸡尾酒疗法(while限制组数)
  18. 盖茨被逐出微软董事会真相曝光:长期跟员工搞地下情,27年婚姻中出轨不断,人设已崩...
  19. python 理论基础知识试题_Python理论基础知识复习
  20. 自动控制原理大作业——已知某位置测控装置如图所示

热门文章

  1. 甲骨文发布第三季度财报 云业务拉动营收增长
  2. Android的折叠华为,Huawei Mate Xs 华为5G折叠机机,发售日期+售价,8寸屏幕+超薄设计+Android 10系统...
  3. ubuntu 安装软件(tar.gz / deb)
  4. 迅捷PDF转PPT转换器使用教程
  5. Windows11系统下C语言开发轻量级工具Dev-C++安装
  6. 爆破音和失爆音----来自于流利说,课后总结
  7. MySQL数据库创建商品表
  8. 部署项目出现Mysql数据聚合不合法
  9. PHPUnit manual note | PHPUnit手册笔记
  10. 中国十大国民小吃,第一居然是它