前言
早上起来看邮件,看到一封被七牛云割韭菜的公告:
内心冰冰凉,不过大家都要吃饭的嘛总不能一直免费下去。所以来研究一下对于我们这种穷人应该如何应对。
一、七牛CDN加速流程
主要流程分析
1、用户通过浏览器访问我的网站(腾讯云服务器),网站下发HTML给浏览器,HTML里包含了图片URL,域名为cdn.bewindoweb.com,于是浏览器继续去这个域名获取图片。
2、这个CDN域名是我在腾讯云域名解析构建的子域名,因此会去解析,我添加了一条CNAME,将cdn.bewindoweb.com指向了cdn.bewindoweb.com.qiniu.com,会继续解析这个七牛融合CDN的域名。
3、七牛融合CDN看看有没有缓存(自定义缓存30天),如果有,则直接下发,流程结束。
4、如果没有缓存,根据3种回源策略:
1)通过七牛云对象存储回源,会去对象存储那里下载图片文件,如果对象存储里也没有,则利用镜像同步服务去指定的位置下载图片文件,我指定的位置是我的服务器,所以会从服务器下载到对象存储,再从对象存储下载到融合CDN,对象存储也会保留一份缓存(自定义30天)。
2)通过域名回源,会去解析域名,然后访问对应服务器拿到图片文件,缓存在融合CDN后下发。
3)通过IP地址回源,直接访问对应服务器拿到图片文件,缓存在融合CDN后下发。
加速原理分析
1、CDN服务器的缓存
融合CDN是由很多台全国各地的服务器组成的,因此如果CDN服务器里有,直接就下发给用户了,不用从我的网站服务器拿。比如新疆的网友可能就在位于新疆的CDN服务器拿到图片,本地的延迟很低,而不用来我的广东服务器拿图片,延迟很高。如果有多个用户同时拿图片,不但距离远导致网络传输慢,我的1M带宽小水管也会挤爆,每个人以10KB/s的速度下载图片,那场景可以想象……而CDN会提供很大的下行带宽,不需要担心服务器成为瓶颈。
2、对象存储的缓存
如果设置成对象存储,当CDN缓存失效,可以直接从对象存储里拿图片,而不需要从我的服务器拿。对象存储是七牛云自己的,肯定也是分布式大带宽的,所以很快就能拿到失效的图片。由于我设置的都是1个月缓存时间,所以基本没有用,只有当CDN服务器的缓存失效时间比对象存储更小,CDN才会比对象存储更快失效去拿数据。为什么大部分默认的CDN都设置的4小时而不是1个月呢?因为大部分CDN都是整站缓存,所以当网站有更新之后,如果不设置更新,用户访问到的仍然是旧网站。我这里设置1个月是因为我只缓存图片(用的PHP伪静态缓存HTML没有用),图片名称都是md5随机Hash的值,一旦图片改变,命名也会改变,不用担心更新后没有及时显示。如果要不改变名称更新图片,可以去七牛云后台手动刷新图片在CDN上的缓存。
3、通过域名/IP回源
如果不用对象存储,直接采用域名/IP,则会直接从服务器拿图片缓存到CDN,可能会出现如果CDN缓存同一时间大量失效,大量请求打到服务器造成服务器短时间无法访问的问题。我设置成1个月,每天更新的频率不高的话,压力也还好(而且网站也没什么人访问QwQ)。
二、应对措施
分析完了原理,再看看七牛云的公告:对象存储CDN回源流出流量以0.15/GB价格进行收费。
对象存储CDN回源流出流量指的就是采用“通过对象存储回源”的方案,当CDN缓存失效时,对象存储下发给CDN的流量。看看官网的服务收费:
没错,就是最后一项收费。那么我们将CDN回源策略改为直接从服务器域名回源就可以了。
1、登录七牛云,选择融合CDN→域名管理,选择之前配置的cdn,点击配置
2、在回源配置里,点击修改配置
3、将回源方式从七牛云存储改为源站域名,填写域名
4、它需要测试一下域名是否可用,随便填写一个合法的图片文件通过测试,就能够确定啦(否则确定按钮是不可用的)。
三、一些注意事项
1、修改完后会有短时间图片访问失败的问题
在确认的期间,访问网站图片可能会报404找不到、409有冲突等等,如果直接访问图片URL还会提示{"error":"no such domain"},或者DNS解析错误:
都是正常的,等待就好了。
2、此方法仅限于只用了七牛CDN的用户
因为很多像WordPress之类的博客,会提供插件上传图片直接放到七牛云存储。那些同学可能需要下载所有文件,然后修改所有文件中的链接,停用七牛云存储才行。我当时总是觉得把文件直接放到其他的服务器不放心,还是放到我自己的服务器只加个CDN外壳同步就好,我可真是个小机灵鬼~
3、不要妄想更换CDN
如果实在不行,不要更换CDN,0.15已经是行业低价了(其他的基本都是0.25、0.35),如果网站访问量不高,还是可以考虑支持七牛云存储这波操作的。
我今天尝试更换了几次CDN,发现以前和百度合作的免费的加速乐(https://www.yunaq.com/jsl/),它的图片加载速度感人,一查对应的CDN服务器,只有两台……
而看看七牛云的:
七牛云真的很良心。我还试用了360网站卫士(http://wangzhan.360.com/),效果也很差(而且还会担心各家都屏蔽360)。360网站卫士免费是为了360搜索引擎等其他的服务能够得到更多的数据,毕竟用360就要做好给360提供数据的心理准备。百度云加速(https://su.baidu.com/)的性能还不知道,审核都要2个工作日,所以今天周六是不行了,以后再看吧。其他野鸡的免费CDN就最好不要尝试了,因为工信部要求CDN注册需要提供手持身份证照片,所以把自己的信息传到野鸡服务器上去还是不太好……
我已经做好了下一波七牛云融合CDN割韭菜的准备了……那就是……放弃挣扎!
你怎么看待这次的收费呢?欢迎评论留言
关注我,查看往期实验文章,也许会有你想要玩的东西~
重大发现!
关注三颗豆子分裂中的同学刚买了彩票就中奖!
点赞评论三颗豆子分裂中文章的同学刚写完代码就跑通!
收藏转发三颗豆子分裂中文章的同学刚转身就遇到了真爱!