简单记录一下阿里云对象存储和 CDN 的使用。
从 2022-10-26 开始,小程序和公众号没有任何 API 可以获取用户的微信头像和微信昵称(除了旧版基础库),对于小程序,微信提供了所谓的头像昵称填写能力,让用户主动提供头像和昵称。这意味着开发者不能继续使用位于微信服务器的用户头像(这是免费的),而是需要把用户上传的头像保存到自已的服务器中(增加了开发者服务器费用)。
我的做法是把头像上传到 OSS,并使用阿里 CDN 加速。
OSS 费用主要包括:
前三项费用是使用 OSS 就肯定会产生的,因为我还用了 CDN,所以还会有 CDN 回源流量费用。OSS 还有数据处理、传输加速、DDoS 防护、跨区复制流量等功能,但这些功能不用不收费。
CDN 默认只收取流量费,10TB 以内、中国内地价格是 0.24 元/GB,这个价格大概只有 OSS 流量的一半。如果用量较多,可以购买 CDN 资源包,中国内地 50GB/年的资源包算下来是 0.168元/GB,500GB/年是 0.133元/GB。
由于小程序不支持 http 连接,而 CDN 开启 https 访问需要按照调用次数额外付费,价格是 0.05 元/万次,是 OSS 调用次数的 5 倍。2023-04-14 更新:虽然小程序的 API 不支持 https,但在 <image>
组件上可以使用 http 链接,所以可以不开启阿里云 CDN 的 https,省下 https 调用费。
EMAS 的云存储比 OSS 更便宜,用量、调用次数价格一样,但是流量价格打了四折左右,且默认开启 CDN,但它功能有点简单,例如文件链接随机生成从而无法根据文件名拼接它的链接、不支持批量增删管理、不能用文件夹分类文件(2023-08-01更新:已支持创建文件夹)等等,所以我没有使用 EMAS 的云存储。
阿里官方提供了从小程序直传文件到 OSS 的步骤。直传有两种签名方法:
无论是后端生成签名,还是前端使用临时访问凭证生成签名,都是短期有效的,这样可以增加 OSS 的安全性。另外我还通过 Referer 白名单设置了防盗链。CDN 也是。
我把 CDN 缓存过期时间设置为最长的 3 年,因为 OSS 支持在 PutObject 等操作发生时,自动刷新 CDN 缓存。
相关文章: