感谢各位的回复,现附上事件更新。
由于七牛给出的外链接“无法删除”,重新创建了一个bucket,改掉代码中所有涉及bucket字段。
先说结果吧,外链内容依旧不更新。
为了防止出现“用人脑无法理解”的回帖,这里附上步骤截图,所有截图均已上传wayback machine.
0.创建bucket,华东地区。
主机,使用官方工具qshell最新发布。根据官方文档(github)强制指定上传主机为回源为 HTTP协议的华东源站 非“加速”站点。执行命令
立即查看本地和外链SHA1哈希值。
等待超过max-age的时间后,重新查看外链SHA1哈希值。
华东地区客户端视角,执行如下验证
立即查看外链SHA1哈希值。
等待超过max-age的时间后,重新查看外链SHA1哈希值。
现初步结论,max-age和外链内容是否更新 无关。
初步假设,七牛对象存储提供的外链 ,不调用 刷新cdn缓存API 就不更新 内容。
PS,诸位看清楚了,至始至终我针对的都是 对象存储的外链内容 。
提供的外链和上传的内容不一致,难道应该强行甩锅给 cdn 概念?哦,那为什么之前用 https就是没问题的 呢?(这个新开的bucket没有申请https协议的CDN服务)
感谢各位的友善回帖,作为时隔原帖24小时后的第二篇附言。这里我本人先给七牛道歉。你们的存储做的很好,这不假,可就是用户找不到对象。所以这“对象存储”产品就是个玩笑。
本次遇到的问题中,使用的都是官方发布的最新工具,如图为证:
官方文档对于缓存更新只字未提,archive.is网页存档为证:
https://developer.qiniu.com/kodo/api/1312/upload
https://github.com/qiniu/qshell/blob/master/docs/fput.md
作为开发者群体中的一员,我可能是被提供更抽象的CDN机制“惯坏了”,可不能否认的是所谓“门槛”说难听点就是一个深坑,官方还以为用户能知道文档只字未提(第二遍强调)。
我觉得再怎么解释这都是不该出现的结果。请扪心自问下,用户上传数据要干什么?难倒是给你们源站磁盘添光增彩?(对此的验证请参见附言第一篇)
退一步说,撇开别的不谈。为什么同样是对象存储服务,HTTPS协议的外链被主动更新了,HTTP的没有更新?
最后说下解决方案吧,感谢L11层@提供的链接,调用七牛的CDN刷新API,官方文档见此。实际项目中可以参考这个小脚本qiniu_renew_helper.sh
FYI:
原帖中的HTTP内容经过24H仍然没有被主动发现删除。本人没有对此执行API缓存刷新,也不想这么做。目的有二:窥探一个过期URL到底多久能被主动发现,提醒读者在删除七牛“对象存储”后一定要调用CDN刷新API
是在捣鼓这个项目V2EX 最热主题 RSS 源 - 非官方 /t/404766时发现的,有兴趣的可以点击看详情。
七牛的CDN刷新API 并没有你想象中那么可靠。写了这篇帖子引来不少人骂我,痛定思痛,某些事还得靠事实说话。
写了个小脚本循环拉取CDN内容和本地进行对比。临时执行作为抽查提供的CDN缓存健康状态,源码见qiniu_validator.sh,演示外链如下:
以上
Thu Nov 9 22:33:08 CST 2017
承蒙各位厚爱,这里是附言3,也是v2ex允许的最后一条附言。HTTP的内容依旧存在,距删除当日已经过去4天,已经试过使用缓存刷新API能够实现删除文件。
相信诸位或多或少看过了附言2中的演示视频。因为在无意中看CDN日志发现在视频演示中出现过,但从没贴过文字链接的私人用feed地址被广为盗用,占总CDN日流量的 94% 。
人群分布:
请求UA:
po的荷包不足以支持诸位爬虫大佬爬私人资源,故删除泄露的私人feed资源,用OPML形式公开泄露订阅源的新地址,文件opml.xml。
以上,
Sun Nov 12 23:54:10 CST 2017
1
falcon05 2017-11-08 21:33:33 +08:00 via iPhone
删除要手动刷新 url 吧?
|
2
Chalice 2017-11-08 21:37:04 +08:00
{"error":"Document not found"}
|
3
gy6221 2017-11-08 21:38:47 +08:00 1
妖都
http5 楼,https document not found |
4
allenhu 2017-11-08 21:40:22 +08:00 via Android 3
你没用过 cdn 吧
|
5
imdjh OP 忘记了最终要的一点,自己补充下(刚才气疯了,下楼跑了几圈):
4. /!\HTTP 协议下的回源策略有严重问题 /!\ 展开说下, 首先是前提:相信各位都知道”回源“是涉及 cdn 的术语,可是我标题写的是”对象存储“。没错,七牛自带 cdn,无论你用不用”融合 cdn “(其实就是 https 协议的 cdn )主机位于国外,工具是官方的 qshell 最新发布版。用的是 qshell fput,看过文档就是道,fput 是需要一个本地文件作为参数的。 再是我遇到的问题: 本地文件被更新过了,qshell 返回正常退出(我手工运行过,过程 success )。但是 HTTP 协议下的文件没有被更新。这里你可以说是 op 中提到的第一点 max-age 的问题,本地节点已经缓存了。好吧,强制你用 https 咯? FYI: 如果想说”回源更新需要时间的呀”,这里明确告诉你,我等了 24h,脚本每小时运行一次,也就是 24 次的更新 24H 的时长,可是依旧是 24H 前的版本。 |
8
imdjh OP |
9
imdjh OP @allenhu 如果你觉得回源更新可以长达 25+次,还毫无反应,那我无话可说。
对了,我的设备都比较蠢,没法用常用的 http://example.com/xxxx.js?random-hash 难道这些设备就应该被排除在 cdn 使用范围外么? |
10
imdjh OP |
11
quericy 2017-11-08 22:50:08 +08:00
记得七牛的回源是遵循客户端请求协议的回源,http 访问会是 http 的回源,https 访问会是 https 的回源
不过七牛的回源确实有时候在一些节点上很迷,主动刷新的 url 拉取还会有问题 |
12
MinonHeart 2017-11-08 23:19:11 +08:00
我七牛账户的余额就是不给退,无奈╮(╯▽╰)╭
|
13
imdjh OP @quericy
感谢回复, **回源是遵循客户端请求协议的** 这个我原来不知道。客户端使用的是 qshell,刚才看了文档,说是自动选取的上传节点。估计是给传到国外源站咯。我再等 24H 看下指定了 HTTP 源站点时,是否有还会复现。 之所以那么气氛,是因为出现了在 HTTP 协议下(免费流量): 1. 联通宽带 - 老版本 2. 电信手机 - 老版本 3. 移动手机 - 新版本 4. 江苏电信(网上被扫出来的代理) - 老版本 5. 国外 - 老版本 这不一致情况让人无比抓狂。 |
14
imdjh OP |
15
sexrobot 2017-11-08 23:28:41 +08:00
自己不知道 CDN 的机制,还出来秀智商。
|
17
imdjh OP @sexrobot 事实都写进 wayback machine 了,还要舔?
仅凭借文件删除 3 小时未更新这一点来说,这个“对象存储”呵呵,可以叫做小 wayback 了吧。 不说别的,我现在的处境就是,改动所有涉及到 bucket 的代码。 为什么?因为文件删除不了,我需要新创建一个 bucket,才能“改动”文件。 |
18
jellybool 2017-11-08 23:45:11 +08:00
所有我半年前转 upyun 了
|
19
liangchaoboy 2017-11-08 23:49:40 +08:00 1
cdn 基于边缘节点缓存,设置 加速域名缓存规则(指边缘节点的缓存时间)短些或者
更新文件后刷新 cdn 缓存,api 接口 : https://developer.qiniu.com/fusion/api/1229/cache-refresh |
20
rrfeng 2017-11-09 00:44:17 +08:00 via Android
我竟然不知道说什么好。。。
花这么长时间吐槽,都足够研究一下到底是为什么了。 |
21
pynix 2017-11-09 00:46:57 +08:00
就这智商,基本靠别对象。。。储存了。。。
|
23
dangyuluo 2017-11-09 05:33:28 +08:00 via iPhone
你可以试试将删除这个时间手动通知一下更新 CDN 边缘节点?
|
25
colordog 2017-11-09 07:05:47 +08:00 via iPhone
我能说我注册了账户几年没用过,然后再登录提醒我欠费账户冻结,联系销售代表么,连登录进去看看的资格都不给我
|
26
kimown 2017-11-09 07:22:06 +08:00 via Android
从一开始接触到现在用,觉得七牛的 cdn 做的挺烂的,还有 js sdk 也烂,但不得不用,也许他们主要业务不是 cdn,不理解删除或者修改文件后,不主动清空缓存,需要在地址上附加 url 是什么脑回路
|
27
renothing 2017-11-09 07:46:12 +08:00
楼主可能对 cdn 有什么误会。
大概说一下,CDN 有两类,一类是 push 方式主动更新节点的。一类是 pull 方式被动更新节点的。楼主说的情况大概是后一类。 |
28
imnpc 2017-11-09 08:20:44 +08:00
配置个 https 需要 24 小时
有商最慢不过几小时 |
29
psirnull 2017-11-09 08:30:37 +08:00 via iPhone
被七扭坑过几千块, 之前注册后测试传了东西忘了删,过了一年提示欠费几千块,每个月还不停累加, 就起靠这样骗钱的。
|
31
imdjh OP @renothing 感谢友善回复。可能七牛就是你说的第二类,需要手动调用刷新缓存 API 来更新。有时间我会更新下的。另外,已验证并非 11L@quericy 所说的按照上传站点的协议更新。
很搞不懂 https 外链内容就是好的。可能官方做 https 的时候用心了吧 =] |
33
OneNian 2017-11-09 09:11:09 +08:00 via iPhone
七牛不适合频繁更新
我是这样觉得 就算加了 url 后缀,文件仍然不能更新,而是又缓存了一个“新文件”,但是七牛 web 后台也只能看到那个没更新的文件。 所以最好像 ghosts 那样,静态文件加个 ?xxxx |
34
OneNian 2017-11-09 09:14:57 +08:00 via iPhone 1
只能被动,去手动刷新,才能让所有节点都更新。
不同节点可能会缓存到不同版本。 |
35
zangbob 2017-11-09 09:43:37 +08:00 1
我就不明白你们,为了那一点儿免费用,天天跟七牛折腾,费不费劲呐。。
又拍的价格也不贵,随便充点儿钱,再加个联盟,可劲儿用都够了。 |
36
SourceMan 2017-11-09 09:45:11 +08:00
我是认真的,按照你的描述,某里云一样是 laji
|
37
zhchyu999 2017-11-09 10:29:26 +08:00
七牛提供免费服务,获得了一个仇人
|
38
slgz 2017-11-09 13:56:34 +08:00
的确,七牛是有这样一个问题, 比如同一个 bucket, 然后相同的文件名(路径也相同), 最后存的图片还是节点缓存的图片, 不是新的图片,
|
39
imdjh OP @slgz 请麻烦看下原帖附言 2,其实是七牛没告诉我们每次变动都要调用 CDN 刷新 API。可笑的是,HTTPS 就没这个问题。
我自己测试成功了,希望你改了代码后也能顺利 =] FYI: 官方文档链接==》 https://developer.qiniu.com/fusion/api/1229/cache-refresh |
40
imdjh OP @liangchaoboy 非常感谢你提供的文档,问题完美解决。HTTP 内容在 2 分钟左右就被更新。
监控节点在华东和美国。用的是单一 URL 作为参数的刷新。希望能给之后的用户一个参考。更多内容请见原帖附言 2 |
41
imdjh OP @SourceMan 哈哈,我的立场一直是七牛。就事论事,友商没用过不敢下结论。不能说是恨铁不成钢,像是被“儿子”给坑了的那种感觉吧。
|
42
cjpjxjx 2017-11-10 11:44:53 +08:00 via iPad
很早就发现了这个问题,WordPress 博客用了七牛加速之后,有时候在服务器上修改了一个 css 样式,保存之后,清除浏览器缓存,刷新页面,无效,登录七牛控制面板,刷新缓存,还是无效,直接删除七牛上的文件,依旧无效,访问文件外链,居然还能访问??一般遇到这情况,都是等个几十分钟到几个小时后才好
|
43
bubue 2017-11-10 23:10:11 +08:00
可以设置实时更新的呀,都不知道吗?- -
|
44
imdjh OP @bubue 你好,我使用了“七牛 实时更新”作为关键字搜索了谷歌和百度,前 5 条结果均没有相关回答。
如果能配置的话,还请点明告知,谢谢。 |
45
a32b88z 2017-11-12 21:18:30 +08:00
借楼主的地盘吐槽一下新浪的 SCS.
新浪 SCS 用了大半年,虽然感觉它就是基本上抄袭 amazon 的 s3,但总体感觉还行,反正算「能用」吧。 但上周 1 突然发现不能访问,访问时报错「 ip 非法请求」,俺使用其 api 时是绑定了访问者的 ip 的。但用了好几个月,怎么突然出现这种错误呢? 向新浪提交了工单,过了 2 个小时,有了第一次回复,新浪征求我的意见竟然是:您能取消 IP 限制吗? 没想到竟然有这种回复。我马上答复「必须要限制 ip 访问」,因为我在 SCS 上都是存放的企业信息。如果云上的资源不能限制 IP, 谁还改用? 然后,过了大概 1 小时,恢复正常访问。 |
46
cgnbkm 2017-11-15 13:58:52 +08:00
最初把 css 放七牛也发现文件不刷新,就给文件加个版本号,h5 里面引用新文件即可。如果需要禁止访问删除的文件,只能刷新 cdn,一般情况下不用管的。
就为这破事折腾这么久,真是闲得蛋疼. |