上周听说 sm.ms 推出了付费服务,不禁想到了一个问题,如果我们只有每月几刀的很低的预算,并且希望用它支持一个图床项目,我们究竟能保证多高的可用性和存续性。租单个便宜 vps 实在太脆弱,如果基于这两年几个云服务商巨头都在大力吆喝的"Serverless"服务来构筑这个项目,会怎么样呢?
花了三四天时间把想法实现了一下,看起来已经没有太明显的问题了。它的特点有:
- 最底下用大家相对来说已经摸清脾气的大容量网盘存储。具体来说用的是 Google Drive,所有数据都加密后存储在 gd,并且不使用外链等可能触碰 gd 神经的操作。所有图片数据和 metadata 可以容易地全站备份(放到其他 gd 账号或者别家网盘)。
- 找一家比较靠谱的 FaaS 服务商,在上面实现一套图床的基本 api。这里选择的是付费版(月付 5usd )的 Cloudflare workers,主要的原因是流量不计费,并且有比较充裕的 key-value 存储 quota,此外可以操作 cf 本身的 CDN cache,合起来可以实现令人满意的 cache,避免掉绝大多数回源的 gd api 操作。即使要回源,也只需要一次 gd api 操作就可以取到图片。墙外访问不太感知得出回源带来的延迟。
- web 前端比较简单(其实是直接抄的 sm.ms )。所有静态资源放在 github pages。
这个方案最大的风险可能还是在于如果完全放置,被用来外链一些敏感内容的话,有整个域名被墙掉的风险。除开这一点,永久储存所有图片,在这样的月供下至少运行个三五年看起来不是什么天方夜谭..

