所有的所有都由自己掌控。

——Sion

引言

2022_3_25日,gitee图床失效,所有图片都返回一个gitee的icon,GitHub图床的速度太慢,sm.ms不稳定,遂写此文。

众所周知,一篇文章大多包含文字、解释性的代码、公式图表等,但是当文字不能表达想法的时候,图片就派上用场了,很多时候图片就是文章的灵魂所在。

但在静态博客领域,图床一直是令人头疼的问题,免费否?稳定否?防盗否?当然大多数人首先考虑的都是费用问题,其次才是稳定性问题,这也就催生了一大批免费的图床[1],当然其稳定性嘛,实在不敢恭维,反正我老是加载不出来。至于付费的嘛,因为人都是短视的动物,触及了金钱,哪怕是一分钱,也很少有人用。

本文就来介绍一种折中的方法,即免费、又相对稳定,也具备完美的移植性。

hexo博客的路径详解

玩Hexo博客的人都知道,博客的文件树大概是这样子的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
blog
+---node_modules
+---public
+---scaffolds
+---source
| +---about
| +---categories
| +---gallery
| +---images
| +---tags
| +---_data
| +---_posts
| | +---Linux
| | | +---linux123.md
| | | +---llinux456.md
| | | +---linux.png
+---themes
+---_config.yml

相对路径

如果你的需求是这样:

开启了hexo的资源文件夹功能,每次创建了一个demo.md就会同时创建一个demo目录,然后想在demo目录里放图片,想在本地和hexo都能预览。

那么,使用这个插件可以解决问题hexo-image-link,直接安装即可。

但如果你跟我一样是个强迫症,受不了一堆杂乱的文件夹,在_post文件夹分类存放了各个类型的文章,而不是一篇文章一个文件夹,那么可以用这个笨方法来解决:

先在souce目录下里创建一个images文件夹,然后再创建各个种类的文件夹来放置不同类型文章的图片,比如artlinux daily,当然英文目录最好,hexo博客文章在网页中显示的链接是http://localhost:4000/2022/03/25/68cd9b1365e0/ ,所以我这样引用:../../../../images/art/pic1.jpg,也就是跳过了文章名、日期、月份、年份,直到根目录(souce)下,再往下到image目录,最后到图片,虽说有点变态,但是能用啊。不过这样做的缺陷是不能在本地编辑器里预览。

demo

托管商

这是本文的核心所在,但也没有太多要讲的,若要提一下的话就是,cloudflare以及其它的托管商[2]cdn本身就很牛(除了github之类的代码托管平台),根本就不需要图床啊,全放本地就好。

而且这样做的话,如果你同时托管在多个地方,一个图片资源也不会都指向一个地址,嗯…就像是分布式储存。

但是这样有一个坏处:不易转移,如果你想要把一些文章转移到别的平台就需要一张一张上传图片,非常麻烦,所以另一个备选方案就是利用Cloudflare的R2来作为图床,参考则篇文章[3],可以学会如何配置储存。


  1. 备受好评的sm.ms↩︎

  2. vercel↩︎

  3. 白嫖 CloudFlare R2 搭建个人图床 · TesterHome ↩︎