如何在云开发中优雅地管控 CDN 流量?

在微信开放社区中,有很多使用云开发的小伙伴反馈遇到了“CDN流量消耗如流水”的状况。小程序

有一觉醒来超额的:后端

有被高质量图片的加载“吓”到不敢用的:微信小程序

遇到以上状况不要慌,极可能是你的使用姿式不对!浏览器

那么问题来了,如何在云开发中优雅地管控 CDN 流量消耗呢?本文就来和你详细聊聊!缓存

按量付费和管道付费

为了便于理解,先来看看云开发的流量计费模式。服务器

简单来讲,按量计费就是:你有多少个量跑出去了,就给你算多少许;可是它并不限制你同一时间跑出去的量,也就是流量峰值不设限。微信

若是你在同一时间须要跑出去100M的量,那么峰值就给你开到100M,在同一时间跑完,最后算费用是100M的钱。网络

管道付费则是限制给你开多宽的“道路”,按照这个“道路”的宽窄收费,好比你选择1M的网络道路,那就按照1M的价格来收钱;在使用时,你的量只能达到1M的速度,再也高不了了,这个最大速度就被称作带宽。框架

可是即便低峰没多少许时,你还必须为这个“道路”付钱。仍是上述例子,你同一时间须要跑出去100M,可是速度只能给你开到1M,那么这些量在100秒后才能够走完,最后算费用是1M的道路租金*租用时长。less

而在现实项目中,总会有业务的高峰和低峰,流量几乎不可能始终保持在一个恒定的速率,这就会形成管道计费有速度的天花板、但闲置时仍在计费的资源浪费问题。

云开发做为 Serverless 云原生一体化后端服务,提供的流量是按量计费的,不限制同一时刻的流量速度,所以,若是开发者使用不合理就会致使流速过快,进而形成“一眨眼的功夫,流量就超额了”的状况。

了解了按量付费和管道付费的区别后,我们进入正题,说说 CDN。

什么是CDN流量?

咱们在使用云开发时,几乎在各处都会看到CDN这个词。

CDN又称内容分发网络,通俗来说就是将你主存储(源站)中的文件,复制给各地的存储点(CDN节点),当有用户访问这个资源时,直接从就近的存储点(CDN节点)获取便可。

云开发的云存储和静态网站托管自然支持 CDN 加速,因此你的用户经过客户端下载文件跑的流量都是 CDN 流量。

以上 CDN 流量只适用于各类渠道走加速公网下载文件的状况,好比浏览器加载网站,客户端下载资源,外部系统请求文件,经过临时地址的各类访问打开文件都在消耗 CDN 流量。

可是若是是内网访问文件,则不走 CDN 流量消耗,好比在云函数中经过 fileID 访问文件等。

什么是CDN回源流量?

当咱们的存储中有文件更新时,存储在 CDN 节点的旧文件又该如何处理呢?在这里引入一个知识点——缓存时间

这里的缓存时间其实就是文件副本在各地存储点(CDN节点)的有效时间,好比默认是两小时,那么每次文件副本在各地存储点的有效时间就是两小时,超过这个时间以后再收到请求时,存储点(CDN节点)就会丢弃过时的旧文件,向主存储(源站)请求最新的文件,而这一请求所产生的流量就称为 CDN 回源流量。

缓存时间既不能太长也不可过短,若是 CDN 缓存间隔时间太短,那么 CDN 节点上的数据会常常失效,致使频繁回源,增长了源站的负载,进而影响了总体的传输效率;若是缓存间隔时间过长,会带来数据更新不及时等严重的业务问题。

云开发的云存储就提供了很是细微颗粒度的缓存时间设置,你能够针对一个文件、一个路径甚至是文件后缀来进行分别设置。

另外,多个缓存规则设置中还有优先级策略,调配变得更加灵活。

云存储是以从后到前的配置模式来作策略计算的,好比一个云存储的域名作了以下缓存配置:

如今请求此路径下资源/test/abc.jpg,其从后到前匹配方式以下:

匹配第一条全部文件,命中,此时缓存时间为 2 分钟。

匹配第二条,未命中。

匹配第三条,命中,此时缓存时间为300秒。

匹配第四条,命中,此时缓存时间为400秒。

匹配第五条,命中,此时缓存时间为200秒。

如何合理管控CDN?

咱们须要把握一个原则:

缩减大小,善用缓存

缩减大小的意思就是,咱们在开发应用时,所须要的多媒体文件,若是没有特殊要求(好比摄像馆的原图发送),须要尽量的压缩。只有减轻了业务资源的大小,才可以根本的减小流量资源的消耗。

另外,用户在上传多媒体资源时,仍然可使用平台或框架能力对资源进行压缩后再上传,保证资源都是通过优化后进入存储,这样在请求下载时就会减轻不少负担。

善用缓存意思就是同一个用户、同一份资源尽量不要请求一次以上,要合理使用客户端的本地缓存能力,将固定资源所有缓存。当用户再此进入时,直接使用缓存的资源。

例如,微信小程序官方就提供了图片缓存配置,开启后全部图片均进行缓存,下次读取相同资源时,直接从缓存中读取。

文档连接:http://mrw.so/6wT3TR

再送给你们一句网络金句:缓存用的好,PV 的效果用的只是 UV 的量。

而在具体使用时,你们仍是须要根据本身的业务状况来合理把握。好比你的资源变动很是频繁,就不太适合缓存优化;而你的资源不能压缩,要保持原大小,则就不适合压缩优化。

结语

以上攻略送给各位 hold 不住 CDN 流量的小伙伴们,若是你们以为 CDN 消耗如流水,用户活跃却没有多少转机,可能就须要好好检查一下本身哪里浪费了。勤俭节约但是中华民族的传统美德,云开发虽好,也须要节约使用哦~

小程序·云开发「错误监控」功能有奖调研

诚邀各位云开发者参与小程序·云开发「错误监控」功能有奖调研,参与即送小礼品。

期待您的宝贵建议,快扫描下图中的二维码参与吧!

产品介绍

云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用、自动弹性扩缩的后端云服务,包含计算、存储、托管等serverless化能力,可用于云端一体化开发多种端应用(小程序,公众号,Web 应用,Flutter 客户端等),帮助开发者统一构建和管理后端服务和云资源,避免了应用开发过程当中繁琐的服务器搭建及运维,开发者能够专一于业务逻辑的实现,开发门槛更低,效率更高。

相关文章
相关标签/搜索