我在七牛上删除一个文件,但是过了一会,我发现原来的那个外链还能下载,同步完得多久?

rt.今天我用七牛提供的api删除了一个文件,但是我发现原有的那个外链地址依旧还能下载。至少我发该问题时,还能下载,删除应该是十分钟前的事了。我想问下,七牛同步得多久?

阅读 8.6k
2 个回答

24小时吧,你可以刷新下CDN,建议使用第二,三种方法吧
清除cdn缓存的几种方式

1,URL 问号传参。

例如,如果http://ikbear.qiniudn.com/iphone.jpg 这个图片资源没有更新,

可以在该 URL 后面加上参数的形式来让 CDN 强制刷新:

http://ikbear.qiniudn.com/iphone.jpg?v=20130910,CDN 拿到这个 URL 后会强制回七牛的存储中取回最新的资源。

具体在程序中可以在每次资源更新之后都更新问号后面的参数。

2,使用七牛云存储提供的 qboxrsctl 命令行工具,强制让 CDN 上的该缓存失效:


qrsctl login <User> <Passwd>


qrsctl cdn/refresh <Bucket> <Url1>,<Url2>...<UrlN>

3,使用我们的管理后台https://portal.qiniu.com/ => 选择一个空间 => 空间设置 => 高级设置 => 缓存刷新

需要注意的是下载分发类型的空间是不支持用第一种方式刷新的

1.删除成功以后,还可以下载,这是因为七牛云有cdn缓存(时间跟你在七牛云客户端设置有关),需要刷新cdn缓存.
2.如果你已经刷新了cdn缓存,那估计是你浏览器缓存问题,清理一下浏览器缓存(本人遇到的是这个问题).
代码如下:

    Auth auth = Auth.create("accessKey", "secretKey");
    Configuration config = new Configuration(Zone.autoZone());
    BucketManager bucketMgr = new BucketManager(auth, config);
    try {
        Response response = bucketMgr.delete("bucket", fileName);
        if(response.statusCode == 200){
            System.out.println("删除成功");
            response.close();
                //刷新cnd缓存 此处可以单独抽取出一个方法,我这边为了方便就写一起了
                CdnManager c = new CdnManager(auth);
                String[] urls = new String[]{"qiniu url"+ "/" + fileName};
                try {
                    //单次方法调用刷新的链接不可以超过100个
                    CdnResult.RefreshResult result = c.refreshUrls(urls);
                    if(result.code == 200){
                      System.out.println("刷新成功");
                    }else{
                      System.out.println("刷新失败");
                    }
                } catch (Exception e) {
                    System.out.println(e);
                }
        }else{
            System.out.println("删除失败");
        }
    }catch (Exception e){
        System.out.println(e);
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进