博客搭建教程(五)

一、前言

在之前的教程中,我们已经完成了博客的多站部署。图片作为博客网站的重要资源,有哪些图床部署方案?今天就来带你熟悉常见的博客图床方案。

二、方案分析

图床方案很多,本质上就是将图片上传到服务器,然后以链接的方式获取图片。一般有三种方式:

  1. 自建图床:在服务器上搭建图床,然后使用。可以选择自行购买服务器搭建,或者使用别人搭建好的图床。
  2. 云存储:将图片等文件上传到云存储,如腾讯云等,这种方式不仅支持图像处理,并且可以配合 CDN 优化图片加载速度。缺点是付费,存在被刷流量的风险。
  3. 全局资源文件:将图片等资源作为全局资源放在博客目录中,一起生成 public 文件,然后以路径的方式加载图片。

这么多种方案,该选择合适的方案呢?我总结了对图床选择的八个维度,如下图所示。

image-20240824142241880
  • 稳定性:即服务的持续性和可靠性,确保图片能够在任何时候都能够正常加载。
  • 可视化界面:提供图片管理页面,方便上传、查看图片等操作。
  • 容量:能够容纳图片的总量以及单个图片的大小限制。
  • 图像处理:支持剪裁、缩放、压缩和水印添加等 API。
  • 配置:管理选项是否灵活,影响上手难度。
  • 成本:主要是存储费用,是否有免费的存储额度和流量额度。
  • 数据迁移:图片迁移是否方便,是否提供导入/导出功能。
  • 安全:保护图片数据,防止恶意盗刷流量等举措。

这几个方面中,稳定性、可视化页面、图像处理和成本 是我们关键要的考虑的。

目前本博客采用了多种方案实现图片的访问,如下表所示。

图片方案说明
一般图片上传到自建图床,如杜老师的 去不图床这些图片并不在文章中,一般用于页面展示,且不需要图像处理
文章图片全局资源文件考虑到文章中的图片与文章关联性比较大,因此放在一块方便迁移;同时也能节省成本,缺点是不能图像处理,影响 public 文件生成速度
封面上传至云存储,例如腾讯云、多吉云等封面需要压缩处理,且有需要其他图像处理的需求,同时可以配合 CDN 加速,提高访问速度

下面就来带大家实现这几种方式,其中使用自建图床比较简单,无需任何配置,基本就是上传后直接复制链接即可下载,因此下文不再赘述。

三、多吉云云存储 + CDN 方案

首先是 多吉云 ,它有免费的 10G 额度,对于博客来说,一般是够用的。配合自家免费的 20G 的 CDN 流量,效果不错。

官方文档:多吉云-文档中心

3.1 存储空间创建

首先创建云存储空间,依次点击 管理控制台 -> 云存储 -> 空间管理/空间列表

image-20240816181400553

然后创建一个存储空间,仅存放图片等静态资源,且不需要图像处理,因此选择 基础型 即可。如果需要 API 处理图片,例如压缩图片等,则选择标准型即可。存储地域我选择 上海(华东),因为云服务器实例是在上海。配置如下图所示。

image-20240816181737812

然后同意《声明》,即可创建成功。

image-20240816182035444

3.2 CDN 加速域名配置

依次点击 融合 CDN -> 域名管理,进入到域名管理页面。

image-20240816182216419

点击添加域名。本教程添加的域名是 img.yngcy.com,用于访问图片等静态资源,因此源站是多吉云的云存储,选择上一步创建的存储空间,参考配置如下图所示。

image-20240816182503539

创建完成后,可以看到 CNAME 记录。

image-20240816183440772

然后在域名购买厂商的控制台页面添加 DNS 解析记录(本教程中以阿里云为例)。

image-20240816183552634

3.3 证书配置

在之前的教程中,我们为网站添加了 SSL 证书,如果域名未添加 SSL 证书,则会出现如下问题。

image-20240816183817759

可以从请求的路径中看到,图片的地址也添加上了 https:// 前缀,所以为了能够正常获取到图片,需要部署证书。申请证书的方法可以参考 博客搭建教程(三) 中的第四部分。

点击 证书管理,上传证书,输入证书和私钥。

image-20240816184608574

然后选择 CDN 域名(img.yngcy.com),上传成功。

image-20240816184729259

3.4 测试

进入到云存储空间,选择刚才创建的空间,点击文件管理。然后上传一个本地文件测试是否能够正常访问。

image-20240816184945148

可以看到,能够正常获取到图片。

image-20240816185127037

四、全局资源文件方案

这种方式比较简单,图片会和文章一起“打包”生成 public 文件。

Hexo 官方文档:资源文件夹 | Hexo

以我之前写的一篇文章为例,首先在 source 目录下创建 imgs/posts 目录,如下图所示。

image-20240829213724597

然后将文章中的图片上传到这个目录中,我这里为了方便,以文章标题作为文件夹名称。

image-20240829213835579

然后在对应的文章中以 路径 的方式索引到对应的图片资源。注意此时预览 MD 文件时并不能加载图片,因为这个路径既不是相对路径和绝对路径。

image-20240829213943681

可以通过 hexo server 命令查看生成的效果。

image-20240829214532297

这种方式的优点是成本低,且图片在全局资源文件中,即“文在图就在”。缺点也十分明显,无法做额外的图片处理(如加水印),如果图片过大,也会影响 public 文件生成的效率。

五、写在最后

以上就是本次的教程,我们介绍了几种常见的图床方案,包括自建图床、云存储和全局资源文件三种。

一般来说在经济条件允许的情况下,使用 云存储 + CDN 的方式最好,图片访问稳定且速度可观。如果只想要将图片上传至网络,以便可以链接获取,那么直接使用自建图床是最省事的方案,提供了可视化的界面,像管理本地图片一样,学习成本低。如果不考虑静态文件生成速度,图片也不需要任何保护,那么直接放在全局资源文件中也是一种可采取的方案。

如果你在跟着本教程的过程中遇到了其他问题或有什么想法,欢迎在下面交流评论!🐻‍❄️