阿里云 CDN 的大 bug,给用阿里云 CDN 的各位提个醒

2019-11-10 16:48:36 +08:00
 xuancaixiaohai

事情是这样的,最近写了一个小软件,登录的时候会从网站上读取 txt 数据,为了提升用户体验,就给 txt 套上了 cdn

然而,使用了一段时间之后发现,在阿里云 CDN 控制台 刷新了 URL 之后 部分节点仍然返回给用户旧的缓存文件(返回的数据如果是 gzip 压缩的话,内容就是新的正常的,如果是没有进行压缩过的,内容就是旧的)

大部分浏览器都是带 gzip 的,对于使用浏览器的用户基本没啥影响

但是,像楼主这样放在 app、软件里面使用的话,因为一般软件不带 gzip,那影响就大了。

排查了一个晚上,一直以为是软件没写好导致的问题,最后竟然意外的发现是阿里云的锅

5038 次点击
所在节点    CDN
23 条回复
mokeyjay
2019-11-10 16:53:30 +08:00
工单客服怎么跟你解释的?
Athrob
2019-11-10 16:55:14 +08:00
加版本号啊, cdn 都这样, 不可能实时刷新.
xuancaixiaohai
2019-11-10 16:56:50 +08:00
已提交工单,经过一系列证明,最终,阿里云工程师承认了是阿里云节点刷新策略问题导致的 bug
顺便吐槽一下阿里云的工程师,也太自大了吧!阿里云稳是没错,但是我把节点 IP,出现问题的情况都描述清清楚楚了,工程师连绑定 hosts 测试一下都懒得测试,就回复工单说没有问题,让我一度怀疑,这是不是阿里云的 bug。
xuancaixiaohai
2019-11-10 16:58:13 +08:00
@mokeyjay 工单一开始我明确提供节点+复现方法给阿里云,但是工程师一直不承认,经过一天的坚持,最终承认是节点刷新策略有问题
xuancaixiaohai
2019-11-10 16:59:48 +08:00
@Athrob 1.中午 12 点左右提交第一次刷新的,中间还刷新了 3 4 次 到晚上凌晨 1 点的时候 节点内容还没变,给十几个小时时间给 CDN 刷新够长了吧。
2.刚才阿里云已承认问题,而且说是修复了
Athrob
2019-11-10 17:01:30 +08:00
@xuancaixiaohai #4 被打脸
Athrob
2019-11-10 17:03:12 +08:00
@xuancaixiaohai #5 嗯嗯, 避免阿里云 cdn 再出什么 bug, 可以对 cdn 访问加上版本号, 这样也不用手动刷新.
shoaly
2019-11-10 17:03:48 +08:00
最好用还是 用 demo.txt?v=100
xuancaixiaohai
2019-11-10 17:11:38 +08:00
@Athrob 不好加啊 是放在软件里面的 软件成品发布之后就改不了 url 地址了
xuancaixiaohai
2019-11-10 17:14:14 +08:00
@shoaly 成品 app 发布之后咋控制这个 v=100 弄个动态页面控制的话又划不来,那还不如不用 CDN 了 直接源站访问 txt
弄个静态页面控制 那不一样面临这个问题
xuancaixiaohai
2019-11-10 17:23:04 +08:00
整个事件最气人的就是阿里云工程师的态度了吧,花了几个小时发现是 CDN 的问题,但是在摆明问题、详细说明复现方法的情况下花了一天时间才让他们相信是 CDN 的问题
akira
2019-11-10 17:30:52 +08:00
如果你不听 2l 8l 的建议,继续这样使用 cdn,照样会有类似的问题
xuancaixiaohai
2019-11-10 17:37:57 +08:00
@akira 我也想啊 关键是咋控制 ver 啊 app 发布之后不做改动 怎么变 ver 呢( app 版本可能几个月都不更新一次,变化的就是 txt 文本的内容)
hasdream
2019-11-10 17:42:57 +08:00
加 不缓存头部信息 txt 后缀默认缓存的
xuancaixiaohai
2019-11-10 17:45:30 +08:00
@hasdream 额 不缓存 txt 文本吗? 但是一般 txt 这种文件都会在 CDN 里面设置成缓存把 所以我特意来 v2 给大家提个醒
xuancaixiaohai
2019-11-10 17:46:46 +08:00
根据阿里云说 这次问题不管带不带 gzip 都会返回旧的 也就是浏览器用户也会受影响
imnpc
2019-11-10 17:52:59 +08:00
这种应该走单独的非 CDN 通道的 或者自己用策略定时刷新
我们 APP 里面是访问接口获取版本号的 不会用 txt 静态文件
xuancaixiaohai
2019-11-10 18:00:21 +08:00
@imnpc 文本有 70kb 左右的内容 还有海外用户 加上文本内容半个多月才更新一次 所以就套了 CDN
用策略定时刷新是什么意思?定时调用阿里云 CDN 的 api 刷新接口刷新吗?
xuancaixiaohai
2019-11-10 18:05:32 +08:00
是刷新策略问题,不是说只有 txt 文件才会受影响,所有被节点缓存的文件,比如 js、css、html 啥的都会受影响,我只是刚好用 txt 发现了
czb
2019-11-10 18:17:02 +08:00
8L 的做法其实算是普遍的实现了

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

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

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

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

© 2021 V2EX