我是认真的,请不要使用七牛 对象存储,特别是基于 HTTP 的“免费服务”

2017-11-08 21:03:24 +08:00
 imdjh
最近捣鼓了一个小脚本,把国外 feed 拉到七牛 对象存储,国内客户端拉起来更快嘛。因为“对开发者”免费,做做实验挺不错的。我也算七牛老用户了,刚开 https 那会儿就申请了,记得当时还要充钱才能申请的。闲话就说这么多。


可是在使用中遇到这些问题,请诸位留意这些坑(如果你看完觉得这都是小意思,还要继续用的话):
0. HTTPS 流量均收费(只是提一下)
1. 对于绑定过 HTTPS 的 bucket。请求 HTTPS 得到的 max-age 和设置页面是一致的。而 HTTP 链接则是 max-age 时长一周(不会被改动)。
2. 上一点提到了,如果你用 HTTP 请求,那么你的文件(我的情况是 xml ),会被地域节点缓存一周。而且你请求 HTTP 返回的是 200,不是 304 http not-modified。对于 HTTP 请求,我试过联通宽带、电信手机、移动手机、甚至挂**国内代理** 和国外 vps 都能得到新旧不同的版本。
3. 删除一个文件后。过 30 分钟,照旧能访问,无论 HTTP 或是 HTTPS。

对于第 2 和第 3 点,我想请诸位玩一个游戏。访问同一资源的 HTTP 和 HTTPS 链接,回复下你得到的 xml 内容和所在地里位置。
如果包含‘ 5 楼‘,那么就是昨天的热榜内容。如果有’鹦鹉‘那么就是今天的。当然啦,还可能被删除了,op 于 8:22 操作的删除。
HTTP==》 http://7xo6xf.com1.z0.glb.clouddn.com/v2ex-hot-topic.xml
HTTPS==》 https://dn-imdjh.qbox.me/v2ex-hot-topic.xml
17020 次点击
所在节点    云计算
46 条回复
falcon05
2017-11-08 21:33:33 +08:00
删除要手动刷新 url 吧?
Chalice
2017-11-08 21:37:04 +08:00
{"error":"Document not found"}
gy6221
2017-11-08 21:38:47 +08:00
妖都
http5 楼,https document not found
allenhu
2017-11-08 21:40:22 +08:00
你没用过 cdn 吧
imdjh
2017-11-08 21:42:35 +08:00
忘记了最终要的一点,自己补充下(刚才气疯了,下楼跑了几圈):
4. /!\HTTP 协议下的回源策略有严重问题 /!\

展开说下,
首先是前提:相信各位都知道”回源“是涉及 cdn 的术语,可是我标题写的是”对象存储“。没错,七牛自带 cdn,无论你用不用”融合 cdn “(其实就是 https 协议的 cdn )主机位于国外,工具是官方的 qshell 最新发布版。用的是 qshell fput,看过文档就是道,fput 是需要一个本地文件作为参数的。


再是我遇到的问题: 本地文件被更新过了,qshell 返回正常退出(我手工运行过,过程 success )。但是 HTTP 协议下的文件没有被更新。这里你可以说是 op 中提到的第一点 max-age 的问题,本地节点已经缓存了。好吧,强制你用 https 咯?

FYI:
如果想说”回源更新需要时间的呀”,这里明确告诉你,我等了 24h,脚本每小时运行一次,也就是 24 次的更新 24H 的时长,可是依旧是 24H 前的版本。
imdjh
2017-11-08 21:43:12 +08:00
@allenhu 见 L5,忘记了说一点。
imdjh
2017-11-08 21:44:16 +08:00
@falcon05 这是七牛比较好的一个方面,和 dropbox 一样的,美丽的 url。
imdjh
2017-11-08 21:46:44 +08:00
@gy6221
@Chalice
感谢回复,请问 HTTP 和 HTTPS 均是无法访问吗?
我这边 HTTP 和 HTTPS 均能访问。

FYI:
我这边的测试工具一直都是 curl
imdjh
2017-11-08 21:49:08 +08:00
@allenhu 如果你觉得回源更新可以长达 25+次,还毫无反应,那我无话可说。

对了,我的设备都比较蠢,没法用常用的 http://example.com/xxxx.js?random-hash
难道这些设备就应该被排除在 cdn 使用范围外么?
imdjh
2017-11-08 21:51:53 +08:00
@gy6221 对了,忘记说。
恭喜,这个 feed 被成功缓存 1 周~
记录下时间戳吧:Wed Nov 8 21:51:43 CST 2017
quericy
2017-11-08 22:50:08 +08:00
记得七牛的回源是遵循客户端请求协议的回源,http 访问会是 http 的回源,https 访问会是 https 的回源

不过七牛的回源确实有时候在一些节点上很迷,主动刷新的 url 拉取还会有问题
MinonHeart
2017-11-08 23:19:11 +08:00
我七牛账户的余额就是不给退,无奈╮(╯▽╰)╭
imdjh
2017-11-08 23:19:55 +08:00
@quericy
感谢回复, **回源是遵循客户端请求协议的** 这个我原来不知道。客户端使用的是 qshell,刚才看了文档,说是自动选取的上传节点。估计是给传到国外源站咯。我再等 24H 看下指定了 HTTP 源站点时,是否有还会复现。

之所以那么气氛,是因为出现了在 HTTP 协议下(免费流量):
1. 联通宽带 - 老版本
2. 电信手机 - 老版本
3. 移动手机 - 新版本
4. 江苏电信(网上被扫出来的代理) - 老版本
5. 国外 - 老版本

这不一致情况让人无比抓狂。
imdjh
2017-11-08 23:22:25 +08:00
附上截图:
https://web.archive.org/web/20171108151432/

从国外主机访问 HTTPS,文件依旧存在。
sexrobot
2017-11-08 23:28:41 +08:00
自己不知道 CDN 的机制,还出来秀智商。
imdjh
2017-11-08 23:36:45 +08:00
@sexrobot 呵呵
imdjh
2017-11-08 23:41:34 +08:00
@sexrobot 事实都写进 wayback machine 了,还要舔?
仅凭借文件删除 3 小时未更新这一点来说,这个“对象存储”呵呵,可以叫做小 wayback 了吧。

不说别的,我现在的处境就是,改动所有涉及到 bucket 的代码。
为什么?因为文件删除不了,我需要新创建一个 bucket,才能“改动”文件。
jellybool
2017-11-08 23:45:11 +08:00
所有我半年前转 upyun 了
liangchaoboy
2017-11-08 23:49:40 +08:00
cdn 基于边缘节点缓存,设置 加速域名缓存规则(指边缘节点的缓存时间)短些或者
更新文件后刷新 cdn 缓存,api 接口 : https://developer.qiniu.com/fusion/api/1229/cache-refresh
rrfeng
2017-11-09 00:44:17 +08:00
我竟然不知道说什么好。。。

花这么长时间吐槽,都足够研究一下到底是为什么了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/404735

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX