图床方案合集:PicGo + PicList + 开源/付费图床全对比

目录

写博客 / 写文档每天都要插图。但稳定的图床比想象中难找:免费的怕跑路、商业的怕封号、自建的怕麻烦。这篇把主流方案分四类讲清楚——自建对象存储、付费图床、自部署开源图床、第三方公共图床——再给一套我自己在用的 PicList + R2 完整配置。

一、图床方案地图

流程图流程图

四种思路的优劣:

方案 稳定性 速度 成本 跑路风险
自建对象存储 + CDN ★★★★★ ★★★★★ $0-$5/月 极低
付费商业图床 ★★★★ ★★★★ $5-$20/月 中
自部署开源 + VPS ★★★ ★★★ VPS 费用 看 VPS 商家
公共图床 ★★ 看运气 0 高

二、推荐方案:R2 + PicList(自用首选)

这是我自己在用的组合:

组件 用途
Cloudflare R2 文件存储(10G 免费,出站免费)
自定义域名 URL 好看 + 走 CF CDN
PicList 本地上传客户端

详细的 R2 开通流程见 Cloudflare R2 完全指南。这里重点讲 PicList 的关键配置。

2.1 为什么 PicList 比 PicGo 好

维度 PicGo PicList
维护活跃度 慢 高
文件管理(删除/重命名) 无 有
监听粘贴板 有 有
批量上传 一般 好
自定义命名模板 基本 丰富
多图床配置切换 一般 顺手

PicList 是 PicGo 的社区 fork,做了大量体验改进。下载:

https://github.com/Kuingsmile/PicList/releases

2.2 PicList 接 R2 的关键配置

图床设置 → AWS S3 → 新建一份:

字段 值
应用密钥 ID R2 API Token 的 Access Key ID
应用密钥 R2 API Token 的 Secret Access Key
桶(Bucket) 你的 R2 桶名
文件路径 {year}/{month}/{md5}.{extName}
自定义节点(Endpoint) https://<accountid>.r2.cloudflarestorage.com
自定义域名 https://img.your-domain.com
自定义区域 auto
路径风格(path-style) 关闭

🪤 这几个值任何一个填错都不会成功。Endpoint 是 cloudflarestorage.com 不是 r2.dev。

三、文件命名模板:{md5}.{extName} 是圣经

PicList / PicGo 都支持命名模板。强烈推荐用 MD5 命名:

模板 效果 评价
{md5}.{extName} abc123.png ★★★★★ 推荐:相同图不重传
{year}/{month}/{md5}.{extName} 2026/06/abc.png ★★★★★ 推荐:分目录便于管理
{timestamp}.{extName} 1734567890.png ★★ 重复上传会有不同 URL
{filename}.{extName} screenshot.png ★ 文件名冲突

💡 用 {md5} 的好处:同一张图你截 100 次也只占一份空间——MD5 相同,上传到 R2 会覆盖同一个 key。

四、命名一致性 = 后端可随时切换

这是图床设计的关键认知:

最终 URL = 域名 + 路径
https://img.your-domain.com / 2026/06/abc123.png
        ↑                              ↑
      你控制                        命名一致

只要这两点保证,后端存储可以无痛切换:

流程图流程图

R2 哪天涨价 / 封号,你把域名 origin 切到 B2 + Alist,所有旧博客里的图片 URL 一行都不用改。

五、迁移备份脚本(rclone)

R2 主存 + B2 冷备:

# 装 rclone
curl https://rclone.org/install.sh | sudo bash

# 配置 remote
rclone config
# 加两个 remote: r2 / b2

# 每周同步备份
0 3 * * 0 rclone sync r2:img-bucket b2:img-bucket-backup \
  --log-file /var/log/rclone.log

六、其它对象存储方案

如果 R2 不能用(被封号、流量超限),备选:

6.1 Backblaze B2 + Cloudflare CDN

  • $6/TB/月,到 CF 出站免费(Bandwidth Alliance)
  • 国内速度套 CF CDN 后能用
  • 配置和 R2 几乎一样

6.2 七牛云

  • 国内访问最快
  • 10G 永久免费 + 10G 流量/月
  • 流量超额按量付费,容易超支
  • 适合个人小流量博客

6.3 又拍云

  • 加入“又拍云联盟”(在网站底部加 logo)= 10G 永久免费 + 15G 月流量
  • 国内速度好
  • 适合做个站联盟交换流量的人

七、自部署开源图床

如果你已经有 VPS,可以自己跑一个:

7.1 EasyImages2.0

https://github.com/icret/EasyImages2.0
  • PHP 写的,单文件部署
  • 自带管理界面
  • 支持 API 上传
  • 缺点:图片直接存 VPS 磁盘,迁移麻烦

7.2 OneImg(初春图床)

https://github.com/onexru/oneimg
  • 更现代化的 UI
  • 多用户支持

7.3 Telegraph-Image

github.com 搜 Telegraph-Image
  • 基于 Telegraph 的免费图床
  • Workers 部署,无需服务器
  • 速度看 CF
  • 缺点:图片放别人家有跑路风险

八、第三方公共图床

仅适合临时用 / 不重要的图——所有第三方图床都有跑路 / 防盗链 / 突然清空 的可能。

图床 速度 限制 备注
sm.ms 国内外都还行 注册后 5MB / 张 老牌、最稳的公共图床
imgur 海外快 国内被墙 国际标准,文档/issue 友好
PostImage 海外快 国内一般 老牌
upload.cc CF CDN 永久存储 香港人开
微博图床 国内极快 防盗链 需要登录微博 cookies
聚合图床 看后端 一图多床 superbed.cn

⚠️ 微博图床防盗链越来越严,已经基本不适合做技术博客的图床。

九、批量替换工具:从旧图床迁到新图床

写了一堆 markdown 文章后想换图床?两类思路:

9.1 改 DNS 不改文章(推荐)

只要:

  1. 旧图床域名是你自己的(如 img.your-domain.com)
  2. 新后端的文件名和旧的一致

把 DNS 切到新后端,所有文章一行不用改。

9.2 实在要改 markdown 的批量替换

# Linux/macOS
find /path/to/blog -name "*.md" -exec \
  sed -i 's|old-domain.com|new-domain.com|g' {} +

# macOS(BSD sed 要加空字符串)
find /path/to/blog -name "*.md" -exec \
  sed -i '' 's|old-domain.com|new-domain.com|g' {} +

或者写个 Python 脚本检测哪些文件包含旧域名图片,需要迁移:

import os
import re
from pathlib import Path

PATTERN = r'!\[([^\]]*)\]\((https://old-domain\.com/[^)]+)\)'

def scan(target_dir):
    for md_file in Path(target_dir).rglob('*.md'):
        with open(md_file, 'r', encoding='utf-8') as f:
            content = f.read()
        matches = re.findall(PATTERN, content)
        if matches:
            print(f"{md_file}: {len(matches)} 张待迁移")

scan("/path/to/blog")

十、CDN 缓存优化

R2 / B2 都按请求次数计费。挂上 CF CDN 后,绝大多数请求会被 CDN 命中,根本不会回源。

CF 控制台 → Caching → Cache Rules → Create rule:

字段 值
Rule name r2-images-cache
If Hostname equals img.your-domain.com
Eligible for cache ✅
Edge TTL 1 month
Browser TTL 7 days

之后 R2 的 Class B 请求会降到原来的 5%-10%。

十一、几条实用经验

  • 自己的域名 = 主权:第三方图床域名挂掉就完蛋,自己域名能随时切后端。
  • {md5}.{extName} 永远不要换:换命名规则等于所有旧链接重传。
  • R2 主 + B2 备:双对象存储双保险,年成本 < $1。
  • PicList 比 PicGo 顺手:建议直接 PicList,PicGo 没必要再装。
  • 不要依赖公共图床做技术博客:sm.ms 这种最稳的也曾经停服一阵。
  • 截图剪贴板上传是核心生产力:Win + Shift + S → 截图 → 复制 → PicList 自动上传 → 返回 markdown,三秒搞定。

按这套配下来,写博客插图体验丝滑、年成本几乎为 0、未来切换零成本。