利用Cloudflare R2搭建图床
前言
之前博客都是通过GitHub实现图床的,但是国内访问图片的速度实在是不敢恭维;另外GitHub其实是不允许做图床的,当库超过1G以后会有人工审查,发现是图床可能会删库,甚至封帐号;
前期解决方案
总体来看有几个解决方法
阿里云oss 腾讯云cos 七牛云 又拍云
七牛云有免费的额度,也可以使用不备案的域名,但是这样的话图片速度比Github还慢
又拍云需要网站备案,加入又拍云联盟才有免费额度,又拍云联盟需要在你的网站上加上他们的广告和需要手持证件照拍照审核
综上,前期我用的第一个解决方案是腾讯云的cos桶,类似的还有阿里云的oss,价格其实也不贵
但是当我部署完了,去浏览器打开图片连接发现,浏览器会自动下载图片,不能预览,翻了半天cos介绍才知道,域名没备案的不支持预览,浏览器打开连接就直接下载了。用了一段时间,虽然没啥大问题,但是总感觉不爽。
总体来说上面的方案都需要备案才能有良好的使用体验。
于是最后转向了Cloudflare的怀抱
优势是:
网站不需要备案,有免费额度
图片响应速度快
R2 定价
ㅤ | 免费 | 超出部分/月费 |
---|---|---|
存储 | 10 GB/月 | 0.015 美元/GB |
A 类操作 | 100 万次/月 | 4.50 美元/百万次 |
B 类操作 | 1000 万次/月 | 0.36 美元/百万次 |
使用Cloudflare R2的前期准备
域名(可不备案)
第一个坑点
其实之前很早就注册Cloudflare了,上去看了一下,有很多自己不是很了解的东西,就留在温柔乡了。。。继续使用cos桶;另一个问题是之前听过创建R2存储用paypal就行,但是我上去看必须要信用卡,遂放弃。
偶然发现是梯子的问题
个人习惯梯子开机自启,习惯谷歌,杜绝百度
可以看到并没有出现paypal的选项
不开梯子就可以使用paypal付款了
网站托管到Cloudflare
首先需要把你的域名添加到Cloudflare
选择免费的计划就行,随后会分配两个dns服务器
直接去域名的服务商那里改成这Cloudflare的DNS地址
另外使用CF之后发现,网站加载速度很慢。把A记录和CNAME设置为仅DNS就行
创建存储桶
位置选择 亚太地区
R2创建完之后,设置连接域名,输入刚刚添加的域名的三级域名,比如 a.com 写为image.a.com,Cloudflare会自动添加记录,用这个域名就可以访问R2存储的内容
接着添加一个管理令牌
剩下的默认即可
PicList不能同步删除云端图片的解决方案
严格按照如图所示位置填写
上传路径可以根据表自己组合填写
payload | 描述 |
---|---|
{year} |
当前日期 - 年 |
{month} |
当前日期 - 月 |
{day} |
当前日期 - 日 |
{fullName} |
完整文件名(含扩展名) |
{fileName} |
文件名(不含扩展名) |
{extName} |
扩展名(不含.) |
{md5} |
图片 MD5 计算值 |
{sha1} |
图片 SHA1 计算值 |
{sha256} |
图片 SHA256 计算值 |
{timestamp} |
Unix 时间戳 |
{timestampMS} |
Unix 时间戳(毫秒) |
地区因为选择亚太地区所有填写 apac
自定义域名写刚刚的三级域名如:http://image.a.com
PicList不能同步删除云端图片的踩坑记录
之前设置PicList自定义节点使用了这个 S3 API,它其实和上图管辖地址只差一个存储桶的名字
而且可以上传图片,但是图片在typora加载会失败
随后将PicList自定义域名http://image.a.com,改为http://image.a.com/blog1
图片显示正常
用了一段时间才发现PicList不能同步删除云端图片,看日志没有看到删除记录
最开始谷歌半天找不到原因,随后找到这个issuse:https://github.com/Kuingsmile/PicList/issues/203才解决这个问题
随后PicList也可以正常的删除云端的图片了
(浪费贼多时间去谷歌,看来下次遇到问题得先去看issuse)