A

关于我的图床创建过程

2025-05-28 14:00

创建图床这事儿,说简单也简单,说复杂也有坑。这篇文章记录我选择并实现 GitHub + jsDelivr 图床方案的整个过程,供你参考,也供我以后回顾。


为什么我需要一个图床?

创建完博客后我才想起需要展示一些图片和视频,但并不想花太多精力去搭建一个图床

最开始我是想直接把图片放进博客仓库,但很快发现几个问题:

  • 图片多了之后,仓库体积变大,拉取和部署都可能会变慢了。
  • 图片路径不统一,管理起来也麻烦。
  • Git 仓库天生不是为了存大量图片设计的。

于是,我开始考虑搭一个独立图床,专门存放博客用图,既清晰又高效。


图床方案大盘点(和我为什么没选它们)

我查了一圈,目前流行的图床方案包括但不限于这些:

图床方案优点缺点
七牛云稳定、支持 CDN需要实名认证、配置较繁琐
腾讯云 COS可控性强、速度快有一定成本
又拍云灵活、开发者友好免费额度有限,配置略复杂
Cloudflare免费有免费额度,但是需要绑定国外信用卡
GitHub + jsDelivr免费、简单、国内访问也快文件不可修改(CDN缓存)

我最终选择了 GitHub + jsDelivr,因为它:

  • 完全免费
  • 无需备案、国内可访问
  • 和我已有的 GitHub 工作流无缝集成

我的图床是怎么搭起来的?

1. 创建图床专属 GitHub 仓库

新建了一个公开仓库,命名为 image-hosting,专门用来存图片。

可以按分类建文件夹,比如:

URL
blog/ projects/ avatar/

2. 配置 PicGo 上传(可选,但强烈推荐)

PicGo + PicGo 插件(picgo-plugin-github-plus)来自动上传图片并生成 jsDelivr 链接。

配置的时候注意两点:

  • 设置 GitHub Token,并赋予 repo 权限;
  • CDN 链接模板设置为:
URL
https://cdn.jsdelivr.net/gh/你的用户名/你的仓库名@main/${path}

例如我的链接是这样的:

URL
https://cdn.jsdelivr.net/gh/arafat813/image-hosting@main/blog/hello.png

只要用 PicGo 上传,自动生成链接,复制粘贴一条龙,非常丝滑。

3. 在 Markdown 中插入图片

写文章时直接贴 jsDelivr 链接即可:

MD
![示例图](https://cdn.jsdelivr.net/gh/arafat813/blog_phptp@main/big.jpg)

使用过程中遇到的问题

  • 图片更新不及时?
    jsDelivr 对同名文件有缓存,如果你替换了图片,建议更换文件名或加 query(如 ?t=20240528)以绕开缓存。

  • 大图片上传不了?
    尽量控制在 5MB 以下,虽然 jsDelivr 支持最大 50MB,但大图片不利于加载。

  • 仓库太乱怎么办?
    建议按用途建文件夹,保持目录整洁,比如 blog/post1/xxx.png。


总结一下

如果你也在用 GitHub 写博客,或者你不想花钱但又希望图片能稳定加载,那么:

GitHub + jsDelivr 是一个非常省心的图床方案。

当然,如果你有更高的需求,比如图片处理、私密性控制,可能就要上云服务了。但对我目前来说,这套方案刚刚好。

后续我准备研究自动备份和 GitHub Action 自动上传,方便又安全,到时候会写个新文章分享经验


如果你也想搭建图床,希望我的经验能帮到你。
欢迎交流,一起成长。