Biliroku的更新——七牛CDN的缓存真顽固

11号那天收到反馈说,B站有些房间号无法录制,但是基本不影响使用。

于是我根据它报告的房间号看了下情况——115。

三位数房间号?B站居然放出了3位数房间号?熟悉B站生放送的人可能知道,B站自开始直播这个功能,房间号就一直是四位数。

于是我打开了这人的直播间——发现居然是陆夫人,我记得陆夫人的直播间是1016啊。

于是打开开发者工具看了看抓包信息,感觉明白了一切。

这就是B站的直播短号嘛。。。

访问 http://live.bilibili.com/1016 的时候,服务器会发一个302定向到 http://live.bilibili.com/115。

HTML内容里面有一句javascript定义了真实的房间号。

因为我的程序直接是信任这个房间号就是真实的,然后直接访问api去找直播数据流下载。

所以就会出现短号找不到的情况。

于是新版更新就是加了一次HTTP请求,先请求主页得到真实房间号,再请求API去找直播数据流。

我花了1个小时修改程序。

花了20个小时处理七牛的缓存。

当我程序改完传到放在七牛的自动更新服务器上,然后我打开自己的正式版程序。

发现没更新?

然后一看,页面根本就没有变嘛。

才发现七牛根本就没刷新缓存。已经更新到1.2.2版本了,而页面上还赫然写着1.2.1

七牛的CDN太顽固了,后台清除多次都无效,不知道缓存机制是个什么样的策略。

后来我忍无可忍,给七牛提交了工单,让他们帮我刷缓存。

于是12日下午17:00缓存终于刷掉了,我自己终于收到了推送。

后来七牛的人告诉我说,

像我这样的用七牛做更新服务器的人很常见,他建议我这么使用——

下载qrsctl命令行管理工具

登录:

1
./qrsctl login <User> <Passwd>

设置302跳转

1
./qrsctl redirect <bucket> 文件名 http://域名/地址 302

这样由于302不会被缓存,每次上传不同的文件名,然后用这个设置新的跳转,就可以解决这个缓存顽固的问题了。