稳定快速、高效免费的图床解决方案-Github-jsDelivr-PicGo

一种稳定快速、高效免费的图床解决方案 —— Github + jsDelivr + PicGo。

更多 Hexo 博客框架内容,请关注博主 Hexo 博文系列:

一文学会 Hexo 轻量级框架的博客搭建【持续更新】

Hexo 预安装环境部署之 Node.js

Git 使用指南之初识

打造沉浸式写作体验,你需要试试-Markdown-Editor

基于图床的博客图片存储解决方案

稳定快速、高效免费的图床方案-Github-jsDelivr-PicGo

Hexo 博客多设备协同管理问题【持续更新】


Introduction

先来对比一下之前博文我们给出的图床解决方案:

  • 自建图床服务器:需要支出必要的服务器等费用,还需要去进行相对繁琐的安装过程才可以使用;
  • 云存储对象:有免费额度,但使用量较大时,可能产生相关存储流量费用,并且需要进行实名认证,域名备案等;
  • 第三方免费图床:流量、储存、图片上传受限,国内大平台图床服务商需要进行实名认证,域名备案等;
  • 其它小众图床:不可靠,随时有挂掉的风险。

使用过 Github 的看官肯定知道,Github 的 Repo 也可以储存东西,最直接的就是程序的版本控制,当然也可以用来当作备份储存。关于存储,Github 官方回复是:该行为不构成 Abuse(滥用)。

因此,GitHub 作为图床是个不错的选择,利用 jsDelivr CDN 加速访问(jsDelivr 是一个免费开源的 CDN 解决方案),PicGo 工具一键上传,操作简单高效。

并且 GitHub 和 jsDelivr 都是大厂,不用担心跑路问题,速度和容量问题都得以解决,而且完全免费,可以说是目前免费图床的较佳的一种解决方案!


下面我们来看解决方案的具体实施:

New Github Repo

登录/注册 GitHub,新建一个仓库。填写好仓库名(HexoImageBed0),仓库描述(Hexo Image Host Repo),仓库必须设为:public 的,根据需求选择是否为仓库初始化一个 README.md 描述文件:

填好仓库信息后,点击【Create Repository】即可完成 Repo 的创建。


生成一个 Token

在主页选择【Settings】:

Next –> 点击【Developer settings】:

Next –> 依此点击【Personal access tokens】–>【Generate new token】:

进入如下界面:

填写好描述,勾选【repo】,然后点击【Generate token】生成一个如图所示的 Token:

注意:请勿关闭当前页面,这个 Token 只会显示一次,自己先截图保存下来。或者等后面配置好 PicGo 后再关闭此网页。


PicGo

PicGo,一款比较优秀的图床工具。

所谓图床工具,就是自动把本地图片转换成链接,以精简用户繁杂的图床上传、下载过程的一款工具,网络上有很多免费图床工具可供使用。

PicGo 可以支持微博,七牛云,腾讯云 COS,又拍云,GitHub,阿里云 OSS,SM.MS,Imgur 等八种常用图床,功能强大,简单易用。

PicGo Setup

首先,你可以从这里提供的 PicGo 下载链接地址 下载 PicGo下载到最新的 PicGo。下载好后界面如下所示:

PicGo 配置

安装好后就可以开始配置 Github 图床了:

具体步骤为:【图床设置】–> 【GitHub图床】,配置界面如下:

==============================================

配置内容详解:


About CDN

百度百科:CDN 的全称是 Content Delivery Network,即内容分发网络。

CDN 是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。

我们知道,放在 Github 的资源在国内加载速度比较慢,因此需要使用 CDN 加速来优化网站打开以及资源访问速度,“jsDelivr + Github” 是免费,好用的 CDN 加速方案,非常适合博客网站使用。

jsDelivr 引用资源方法:

https://cdn.jsdelivr.net/gh/ {your usrname name}/{your repositry name}@{release version}/{resource file path}

例如:

1
2
# https://cdn.jsdelivr.net/gh/TheNightIsYoung/HexoImageBed0@1.0/images/test.png
# https://cdn.jsdelivr.net/gh/TheNightIsYoung/HexoImageBed0@2.0/css/style.css

注意:版本号不是必需的,是为了区分新旧资源,如果不使用版本号,将会直接引用最新资源,除此之外还可以使用某个范围内的版本,查看所有资源等,具体使用方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 加载任何Github发布、提交或分支
https://cdn.jsdelivr.net/gh/user/repo@version/file

# 加载 jQuery v3.2.1
https://cdn.jsdelivr.net/gh/jquery/jquery@3.2.1/dist/jquery.min.js

# 使用版本范围而不是特定版本
https://cdn.jsdelivr.net/gh/jquery/jquery@3.2/dist/jquery.min.js
https://cdn.jsdelivr.net/gh/jquery/jquery@3/dist/jquery.min.js

# 完全省略该版本以获取最新版本
https://cdn.jsdelivr.net/gh/jquery/jquery/dist/jquery.min.js

# 将“.min”添加到任何JS/CSS文件中以获取缩小版本,如果不存在,将为会自动生成
https://cdn.jsdelivr.net/gh/jquery/jquery@3.2.1/src/core.min.js

# 在末尾添加 / 以获取资源目录列表
https://cdn.jsdelivr.net/gh/jquery/jquery/

Quick Start

安装配置好 Github + jsDelivr+PicGo 之后,我们就可以进行高效创作了

点击 PicGo【上传区】,将图片拖拽到上传区域,即可自动上传到 Github 仓库(支持多图片上传),注意上传区域下方可设置图床链接格式,默认为 Markdown 格式(可以直接复制到 MD 文档中使用)。

PicGo 还有相册功能,可以快速查看以及复制上传的图片链接。并且可以对已上传的图片进行删除,修改链接等快捷操作。

例如,我们选择默认的链接格式(Markdown),上传完毕后,点击相册,然后复制相应图片链接,示例:

1
![](https://cdn.jsdelivr.net/gh/TheNightIsYoung/HexoImageBed0/Img/hexo-picgo-setting.png)

这样的 Markdown 链接格式,可以直接插入到 MD 中使用了。

======================== PicGo Use Error ========================

PicGo 用了一段时间,可能突然发现偶尔上传图片时报如下错误:

1
2
# 上传失败:服务端出错,请重试
# 上传失败:请检查配置和上传文件是否符合要求

解决方法(迷之方法~):

更改文件名(任何形式的改动)即可成功上传。向服务器上传已存在图片也会上报上诉错误。

================================================================

自此,我们就成功搭建起了基于 “Hexo + Github·Pages + Gitee·Pages + Domain + VSCode + TinyPNG + PicGo + Image Host ” 的个人博客。


You need to know more

当然了,人无完人。Gihub+jsDelivr+PicGo 图床解决方案也是有缺陷的,你应该了解当前方案的局限:

Github Page 容量受限

正如 Github 官方给出的说明:

Github 没有设置磁盘配额。我们试图为所有 Git 仓库提供充足的存储空间。保持存储库的大小可以确保我们的服务器快速且下载速度快。

如果您经常向 GitHub 推送大型文件,可以考虑将 Git 大型文件存储(Git LFS)作为你的工作流的一部分。Git LFS 可以很好地使用 GitHub 流,并且可以与任何大文件一起使用,不管它的类型是什么。

如果您的存储库超过 1 GB,则可能会收到来自 GitHub 支持的礼貌电子邮件,要求您减少存储库的大小以使其恢复。

也就是说,对于 Github Repo 是没有磁盘配额限制的,但单个仓库存储要低于 1G。

这也就意味着,一旦仓库满额,就得需要重新配置一个新的图床仓库了…


Public Repo

Github 中创建的图床仓库必须是 Public,如果是 Pravite,那么图片地址会带有一个随时刷新 Token,这样虽然 Repo 他人不可见,但是也没法作为图床用。


Github Contribution Activity

图床每添加一张,就会进行一次 commit,这样会导致你的 Github 动向表部分一片绿……虽然这样显得你很活跃,但是真正点进去会发现你的代码更新并没有你真正提交 commit 的频率高。


小结:

Gihub 是一个稳定快速,高效免费的图床解决方案,但绝对不适用于大流量场景,只限于个人小流量博客站点适用。

并且,我们要注意:禁止滥用!!!把 Github 当图床算滥用,那么和把微博当图床使用最终导致被锁理所应当。


Author

Waldeinsamkeit

Posted on

2017-09-21

Updated on

2021-11-24

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.