零成本博客实战②:图床扩容,从多仓库分片到对象存储
一句话结论:图床先用「多仓库分片」扛到 5GB 左右,超过这个量级或需要国内加速、图片处理、防盗链时,再换对象存储;换的时候保留旧链接,新图走新源。
上一篇讲完了三个仓库怎么分工。这一篇讲一个迟早会碰到的问题:图片放不下了怎么办。
一、先算清一个仓库能装多少
GitHub 官方建议仓库控制在 1GB 以内,单文件不超过 100MB。按技术博客的图片分布估算:
| 图片类型 | 典型大小 | 一个 1GB 仓库能放 |
|---|---|---|
| 截图(PNG,1080p) | 150~400KB | 约 3000 张 |
| 封面(JPG,压缩后) | 80~150KB | 约 7000 张 |
| 流程图 / 架构图(PNG) | 40~120KB | 约 10000 张 |
| GIF 动图 | 2~8MB | 100 多张 |
按一周两篇、一篇 3 张图算,一年约 300 张,1GB 能撑好几年。真正的风险不是数量,是随手塞进来的大文件——一张 6.8MB 的 GIF 顶得上 50 张截图。
所以第一条规则不是扩容,而是:进仓库前先压。截图转 PNG-8 或 WebP,GIF 换视频或静态图,封面压到 200KB 以内。
二、分片:images-1 到 images-n
容量真到瓶颈时,最省事的方式是按时间或分类切开:
blog-images-1 ← 2026 年的图
blog-images-2 ← 2027 年的图
blog-images-3 ← 按需再开
路径结构完全不变,只换仓库名:
https://cdn.jsdelivr.net/gh/your-name/blog-images-1@main/blog/05.ai/03.rag/01/a.png
https://cdn.jsdelivr.net/gh/your-name/blog-images-2@main/blog/05.ai/03.rag/01/b.png
好处:
- 老图不用迁移,老链接永久有效
- 每个仓库都在 1GB 以内,克隆、构建都不受影响
- 成本仍然是 0
代价:得记住哪张图在哪个仓库。解决办法是在路径里带年份(blog/2027/...),或者在文章 frontmatter 里记一个 imageRepo 字段。
三、jsDelivr 的边界
用 jsDelivr 加速 GitHub 图床很香,但它不是没有上限:
| 边界 | 表现 | 应对 |
|---|---|---|
| 单文件过大 | 请求失败或超时 | 单图压到 1MB 以内 |
| 仓库体积过大 | 加载变慢、偶发 5xx | 分片,单仓库控制在 1GB |
| 首次访问 | 未命中缓存时较慢 | 发文后自己先访问一遍预热 |
| 内容更新 | 缓存有延迟 | 换文件名而不是覆盖同名文件 |
| 极端情况 | 服务不可用 | 保留原始 raw 地址作为兜底 |
最容易被忽略的是缓存:同名文件覆盖后,CDN 可能还在返回旧图。做法很简单——图片永不覆盖,只新增,改图就换文件名。
四、什么时候该换对象存储
分片能撑很久,但下面这些情况,Git 仓库就不合适了:
| 触发条件 | 说明 |
|---|---|
| 总量超过 5GB | 仓库克隆、CI 拉取都会变慢 |
| 需要国内稳定加速 | jsDelivr 在国内可用性会波动 |
| 需要图片处理 | 缩略图、水印、格式转换,对象存储自带 |
| 需要防盗链 / 签名 URL | Git 仓库做不到 |
| 需要按目录统计流量 | 对象存储有访问日志 |
换句话说:只要你还只是「存图 + 外链」,Git 仓库够用;一旦开始要「图片服务」,就该换。
五、对象存储的几个选项
| 方案 | 免费额度 | 适合场景 |
|---|---|---|
| Cloudflare R2 | 10GB 存储,出站流量免费 | 个人博客首选,绑定自定义域名 |
| 阿里云 OSS / 腾讯云 COS | 新用户有试用额度 | 国内访问稳定,按量计费 |
| 七牛云 | 有免费额度 | 图片处理能力强 |
| Backblaze B2 + Cloudflare | 10GB 免费 | 便宜,配置略麻烦 |
具体价格和额度以各家官网为准,这里只给选型顺序:先 R2(免费且出站不收费),国内访问要求高再看 OSS/COS。
六、迁移步骤:别一次全换
真要迁移,按这个顺序,风险最低:
- 保留旧图床:老文章继续用旧链接,不动
- 新图走新源:新文章直接上传到对象存储
- 双写期:重要文章的图备份到新源,但链接暂不改
- 批量替换:确认新源稳定后,用脚本把 Markdown 里的域名批量替换
- 验证:抽查 20 篇的图片是否 200,再清理旧仓库
关键是第 1 步:旧链接永远不要删。图床迁移最常见的翻车,就是「迁移完把旧仓库删了」,结果老文章全是破图。
七、我的结论
- 现在:Git 仓库分片 + jsDelivr,够用且免费
- 触发条件:超过 5GB,或者开始需要图片处理/防盗链
- 迁移原则:旧链接不动,新图走新源,双写一段时间再切换
一句话:图床的终局不是「更大的免费仓库」,而是「按需付费的图片服务」。在此之前,分片是最划算的过渡方案。
作者原创声明
- 作者:amyaxy
- 首发:amyaxy.github.io · 2026-10-31
- 原文:/pages/269f8c/
- 许可:CC BY-NC-SA 4.0,本文为原创,转载请注明出处

浙公网安备 33010602011771号