图床
图床
为什么要使用图床?
我们在写 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 的服务。默认情况下,用户是没有任何权限的。
-
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 请求。算了,懒得搞了。