logo科技微讯

阿里云 OSS 和 CDN 简单使用笔记

作者:科技微讯
日期:2023-03-25
📝 笔记

简单记录一下阿里云对象存储和 CDN 的使用。

从 2022-10-26 开始,小程序和公众号没有任何 API 可以获取用户的微信头像和微信昵称(除了旧版基础库),对于小程序,微信提供了所谓的头像昵称填写能力,让用户主动提供头像和昵称。这意味着开发者不能继续使用位于微信服务器的用户头像(这是免费的),而是需要把用户上传的头像保存到自已的服务器中(增加了开发者服务器费用)。

我的做法是把头像上传到 OSS,并使用阿里 CDN 加速。

费用

OSS 费用主要包括:

  1. 存储费:0.12 元/GB/月;
  2. 外网出流量:00:00-08:00(闲时)0.25 元/GB、8:00-24:00(忙时)0.50 元/GB;
  3. 调用次数:0.01 元/万次;
  4. CDN 回源流出流量:0.15 元/GB;

前三项费用是使用 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 的步骤。直传有两种签名方法

  • 服务端签名:服务端根据你的阿里云账号 accessKeyId、accessKeySecret 的生成签名,并设置签名的有效期,前端请求服务端获取签名,然后携带签名上传图片;
  • 客户端签名:签名由客户端生成,但生成方式不是根据你的阿里云账号 accessKeyId、accessKeySecret,因为这两个都是敏感数据,不能放在前端,而是根据 STS 临时访问凭证生成签名,那 STS 临时访问凭证从哪里获取?也要建立一个后端服务,这个后端服务根据你的阿里云账号 accessKeyId、accessKeySecret 生成 STS 临时凭证,并设置有效期,返回给前端使用;

无论是后端生成签名,还是前端使用临时访问凭证生成签名,都是短期有效的,这样可以增加 OSS 的安全性。另外我还通过 Referer 白名单设置了防盗链。CDN 也是。

我把 CDN 缓存过期时间设置为最长的 3 年,因为 OSS 支持在 PutObject 等操作发生时,自动刷新 CDN 缓存。


相关文章:

donation赞赏
thumbsup0
thumbsdown0
暂无评论