小程序本身的服务器费用往往不高,真正花钱的是图片和视频的存储与流量。用户一多,这块费用可能比服务器还贵,而且涨得没有明显征兆。
提前把这块规划好,能省下不少。
一、成本是怎么产生的
存储费按占用空间算,视频占得最多。一个几分钟的宣传视频可能几十兆,存几百个就占了不少空间。图片相对小,但数量多的时候也很可观。
流量费按访问量算,用户每次看都要产生。这是大头,而且跟用户量成正比。一条视频被一千个人看,流量费就是这一条的大小乘以一千。
还有一个容易被忽略的成本是外链流量。小程序里引用了别处的图片,虽然不占自己的存储,但对外部资源的依赖会带来稳定性和版权风险。
二、几种省成本的做法
图片按显示尺寸给。列表里的缩略图实际显示一百多像素宽,却传了原图几兆的版本,纯属浪费。做法是上传时生成多个尺寸,按场景给对应的版本。
用合适的格式。同样的画质,新格式的体积能小不少,而且现在的手机都支持。这一步不需要改架构,换了就能省。
视频只给需要的用户。列表页不要自动播放视频,用一张封面图代替,用户点了才加载视频。这一条对流量费的影响很大。
设置缓存策略。同一张图片用户反复看,如果每次都重新下载就浪费了。合理设置缓存,让用户本地存一份,能减少重复流量。
三、资源放哪里
放在自己的服务器上。简单直接,小规模的时候够用。缺点是如果用户分布广,远处的用户加载慢,而且服务器带宽要足够,不然一忙就卡。
放在对象存储加上内容分发网络。这是主流做法。文件存在对象存储里,通过分发网络就近提供给用户,速度快,费用按用量算。适合有一定用户规模的。
用现成的云服务提供商的图片处理能力。上传一次,之后按需要生成不同尺寸和格式,还能带上水印和压缩。省去了自己处理的工作量。
小规模起步的时候,直接用对象存储就够,不一定马上配分发网络。等访问量上来了,再打开分发功能,这是可以随时调整的。
四、几件容易出问题的事
资源没做权限控制。放在公开存储里的文件,只要知道网址谁都能访问。涉及用户上传的图片,比如身份证照片、票据照片,必须做访问控制,用带时效的链接访问。
旧文件没有清理。用户换了头像,旧头像还在存储里占着。时间长了积累的废弃文件不少。要有定期清理的机制。
上传没有限制。用户上传超大文件或者不允许的格式,既浪费空间也有风险。客户端和服务端都要限制大小和类型,不能只靠前端。
最后提醒一句,成本要定期看。用量是在变化的,可能某个月因为一个活动导致流量费翻了几倍。有监控才能及时发现异常,比如某个文件被大量访问,可能是被外链盗用了。
