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

vps网友提供 11-08 讨论归档 46
最近捣鼓了一个小脚本,把国外 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

本文由 vps网友提供,转载请注明出处

本文链接: https://www.vpsvsvps.com/discuss/a/1676471871622615040.html

标签:
rrfeng
11-09

我竟然不知道说什么好。。。

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

liangchaoboy
11-08

cdn 基于边缘节点缓存,设置 加速域名缓存规则(指边缘节点的缓存时间)短些或者
更新文件后刷新 cdn 缓存,api 接口 : https://developer.qiniu.com/fusion/api/1229/cache-refresh

jellybool
11-08

所有我半年前转 upyun 了

imdjh
11-08

@sexrobot 事实都写进 wayback machine 了,还要舔?
仅凭借文件删除 3 小时未更新这一点来说,这个“对象存储”呵呵,可以叫做小 wayback 了吧。

不说别的,我现在的处境就是,改动所有涉及到 bucket 的代码。
为什么?因为文件删除不了,我需要新创建一个 bucket,才能“改动”文件。

imdjh
11-08

@sexrobot 呵呵

sexrobot
11-08

自己不知道 CDN 的机制,还出来秀智商。

imdjh
11-08

附上截图:
https://web.archive.org/web/20171108151432/

从国外主机访问 HTTPS,文件依旧存在。

imdjh
11-08

@quericy
感谢回复, **回源是遵循客户端请求协议的** 这个我原来不知道。客户端使用的是 qshell,刚才看了文档,说是自动选取的上传节点。估计是给传到国外源站咯。我再等 24H 看下指定了 HTTP 源站点时,是否有还会复现。

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

这不一致情况让人无比抓狂。

MinonHeart
11-08

我七牛账户的余额就是不给退,无奈╮(╯▽╰)╭

quericy
11-08

记得七牛的回源是遵循客户端请求协议的回源,http 访问会是 http 的回源,https 访问会是 https 的回源

不过七牛的回源确实有时候在一些节点上很迷,主动刷新的 url 拉取还会有问题

imdjh
11-08

@gy6221 对了,忘记说。
恭喜,这个 feed 被成功缓存 1 周~
记录下时间戳吧:Wed Nov 8 21:51:43 CST 2017

imdjh
11-08

@allenhu 如果你觉得回源更新可以长达 25+次,还毫无反应,那我无话可说。

对了,我的设备都比较蠢,没法用常用的 http://example.com/xxxx.js?random-hash
难道这些设备就应该被排除在 cdn 使用范围外么?

imdjh
11-08

@gy6221
@Chalice
感谢回复,请问 HTTP 和 HTTPS 均是无法访问吗?
我这边 HTTP 和 HTTPS 均能访问。

FYI:
我这边的测试工具一直都是 curl

imdjh
11-08

@falcon05 这是七牛比较好的一个方面,和 dropbox 一样的,美丽的 url。

imdjh
11-08

@allenhu 见 L5,忘记了说一点。

imdjh
11-08

忘记了最终要的一点,自己补充下(刚才气疯了,下楼跑了几圈):
4. /!\HTTP 协议下的回源策略有严重问题 /!\

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


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

FYI:
如果想说”回源更新需要时间的呀”,这里明确告诉你,我等了 24h,脚本每小时运行一次,也就是 24 次的更新 24H 的时长,可是依旧是 24H 前的版本。

allenhu
11-08

你没用过 cdn 吧

gy6221
11-08

妖都
http5 楼,https document not found

Chalice
11-08

{"error":"Document not found"}

falcon05
11-08

删除要手动刷新 url 吧?