为什么需要图床方案
写技术博客时,图文并茂能大幅提升阅读体验。但图片存储和访问是个问题:
- 图片和文章放一起:仓库越来越大,clone 慢
- 直接用 GitHub raw 链接:国内访问速度慢,经常超时
- 付费图床:成本高,个人博客没必要
- 第三方免费图床:不稳定,随时可能挂掉
GitHub + jsDelivr CDN 是最佳免费方案:
- GitHub 做存储,免费无限容量(单文件≤25MB)
- jsDelivr 做 CDN 加速,国内有节点,访问速度快
- 完全免费,无需付费
- 与博客源码同仓库,管理方便
方案架构
工作流程:
- 图片存放在博客仓库的
static/images/目录 - 推送代码到 GitHub
- jsDelivr CDN 自动缓存 GitHub 仓库文件
- 文章中通过 jsDelivr CDN 链接引用图片
- 用户访问时从最近的 CDN 节点加载图片
配置步骤
1. 目录结构
|
|
2. Hugo 配置
在 hugo.toml 中添加 CDN 配置:
|
|
3. 图片短代码
创建 layouts/shortcodes/img.html,自动使用 CDN 链接:
|
|
4. 使用方式
在文章中用短代码引用图片:
|
|
5. 图片上传脚本
用 Python 脚本一键复制图片并重命名:
|
|
输出:
|
|
jsDelivr CDN 优势
| 特性 | 说明 |
|---|---|
| 免费 | 完全免费,无流量限制 |
| 国内加速 | 国内有 CDN 节点,访问速度快 |
| 自动缓存 | 推送 GitHub 后自动缓存 |
| 版本管理 | 支持指定分支/Tag/Commit |
| 刷新缓存 | 支持主动刷新 CDN 缓存 |
| HTTPS | 默认支持 HTTPS |
注意事项
- 单文件大小:GitHub 单文件建议 ≤25MB,超过会有警告
- CDN 缓存:推送后可能需要几分钟才能生效,可主动刷新缓存
- 图片命名:建议用
日期-序号-名称格式,避免重名 - 本地开发:
useInDev = false时本地用相对路径,不依赖 CDN - 仓库公开:jsDelivr 只能访问公开仓库,私有仓库不行
刷新 CDN 缓存
如果图片更新了但 CDN 还是旧的,可以主动刷新:
|
|
总结
GitHub + jsDelivr CDN 是个人博客图床的最佳免费方案:
- 零成本:完全免费
- 速度快:国内 CDN 加速
- 管理方便:与博客同仓库,Git 管理
- 可扩展:后续可无缝迁移到其他图床
配置完成后,写文章时只需要用 短代码,图片就会自动通过 CDN 加速加载。
