图床

图床

为什么要使用图床?

我们在写 markdown 文档的时候,经常需要粘贴图片,在部署静态博客的时候,这些图片的存储是一个大问题,因为你在编辑文章的时候,图片是存储在本地的一个文件夹里,一般都是文档所在目录下的 asserts 文件夹,手动发布文章的时候,不仅得把文章发布到静态博客,文章中的图片也要复制,不然在渲染 markdown 的时候,会无法加载图片,而且当我们想将文章发布到其他平台的时候,又得额外处理图片,此外,而且图片非常占空间,在远程部署的时候,传输图片都会占用很多时间,于是,图床应运而生,图床的意思就是将图片全部放到一个集中的图片仓库中,通过 url 来使用里面的图片。这样,所有的问题都解决了,唯一的问题就是你的网络可能会断。

图床工具 PicGo

PicGo 官方文档非常好用,照着文档安装即可。

有一点遗憾的就是,我本地使用的 Markdown 编辑器为 Marktext,而 Marktext 无法跟通过 exe 安装的 picgo 互通,只能额外安装和配置 PicGo-Core,但是无法使用图片压缩。而且上传不稳定,算了,还是用 exe 安装的 picgo 吧,上传之后,然后再把图片链接复制过来即可。通过鼠标快捷键,可以快速实现图片上传,并将连接填充到剪切板,我们直接在文章中粘贴即可,体验非常流畅。

通过 Github 搭建免费图床

方法也很简单:配置手册 Github 图床 | PicGo,照着来即可,说两点文档里没提到的。

  • 推荐使用 picgo 插件:picgo-plugin-compress,这个插件会在上传图片前对图片进行压缩,提升上传速度,降低存储压力

  • 配置 jsdelivr 的 CDN 加速,免费,好用,设置方式是将 https://cdn.jsdelivr.net/gh/liangkang1436/image-hosting@main 把这个贴在 picgo 的 GitHub 图床配置中的自定义域名即可

    这个域名的格式为https://cdn.jsdelivr.net/gh/GitHub用户名/图床所在仓库名@图床所在分支名

直接使用阿里云的 OOS

Github 图床最大的优势是免费,没有容量限制,但是有一个致命的缺陷就是国内可能无法访问,也就是说当你搭建的博客里使用了保存在 Github 图床里的图,那么国内用户在浏览你的博客的时候,图片大概率会加载不出来,为了避免这种情况,我们可以把图床安装在国内,Gitee 是一个不错的选择,但是后来 Gitee 打击部署图床的行为,没办法,我们就只能寻找其他图床,后来了解到阿里云的 OOS 服务一年才 10 块钱不到,决定直接购买阿里云的对象存储来做图床,可靠有保证。

方法很简单:

使用阿里云对象存储 OSS+PicGo 搭建图床 - 阿里云开发者社区

阿里云 OSS PicGo 配置图床教程 超详细   

有几点教程里可能没有提到,需要注意:

  • 创建用户之后,设置用户权限,使得用户可以访问 OSS 的服务。默认情况下,用户是没有任何权限的。

  • Bucket 的读写权限要设定为公共读。

而且阿里云 OOS 比较方便的一点是,通过手机里的阿里云 APP 可以直接浏览对象存储中的文件,相当于一个 OOS 的客户端,非常方便。

不过有一点需要注意,阿里云的 OSS 服务收费,不是按照时间收费,而是按照空间和流量收费,我们支付的 10 块钱,并不是保证我们可以用一年 OSS 服务,而只是预充值了 10 块钱,然后根据存储占用的空间和下载的流量实时扣费,10 块钱扣完了,OSS 服务就停了,需要充值才能继续使用服务

我们当前只购买了存储的服务,没有购买下载流量的服务,阿里云会采用默认的流量计费方式计费,即0.5元/GB,也就是说你浏览 OSS 中的图片产生的流量会按照0.5元/GB从 10 块钱里面扣。其实还是挺贵的。不过好在我们的图片大部分都不大,所以实际花费的费用还好。

费用与成本中可以看到余额

账单详情产品量价汇总标签页中可以看到流量产生的费用

防盗刷

官方帮助文档:降低因恶意访问流量导致大额资金损失的风险

因为我们将 Bucket 的读写权限要设定为公共读。因此任何人都可以通过访问 OSS 中的资源来产生下行流量,消耗我们的账号内的余额,网上经常有人的 OSS 被刷几千块,因此我们有必要进行一些防御性设置。

设置高额消费预警

如开启预警,设置的产品日账单大于预警阈值时,每天短信提醒一次。当前支持 10 个产品的设置。当前短信接收人为账号联系人

配置防盗链

配置报警规则

参考博客:阿里云对象存储 OSS 限流超过阈值自动关闭【防破产,保平安】 - JavaScript.net.cn「线球实验室」

在控制台的右下角处点击设置告警规则

在云产品监控下找到 OSS,然后点击创建报警规则

创建告警规则

然后填写报警联系人,一般就是当前账号对应的用户,到了紧急级别的告警,会给报警联系人打电话。

然后点击高级设置,在报警回调中填写链接,到了紧急级别的告警,会调用这个链接。在阿里云对象存储 OSS 限流超过阈值自动关闭【防破产,保平安】 - JavaScript.net.cn「线球实验室」中,说是可以直接通过发起一个 PutBucketAcl 请求设置或修改存储空间的访问权限,但是很明显这个请求无法仅通过一个 url 实现,我们还得搭建一个后端程序才可以成功发起 PutBucketAcl 请求。算了,懒得搞了。

0%