关于图片储存的那些事
Summary
作者在2024年2月13日对之前的文章进行了修订,讨论了个人博客由于资金问题转向静态博客后,遇到的静态资源存储问题。文章评估了多个公共图床,如SM.MS、聚合图床、路过图床、去不图床、有图床、Bilibili图床、Github+JSDelivr、NPM+各种NPM镜像、图片缓存等。作者分享了不同图床的优缺点和适用场景,并提供了部分代码示例。文章还提及了一些比较便宜的云服务商,如多吉云、缤纷云s4、CloudFlare R2和BackBlaze。作者建议进行多端备份以确保图片不会丢失,表示会继续更新文章以分享更多优秀的白嫖资源。
序言
自上次搬运了CYF的文章之后,再次谈及文件储存,也已经是一年多以后了
嗯。现在是2024年2月13日,回档文章时顺便对于此过时文章进行修订。
为什么要突然谈及关于这方面的事情呢?其实最主要的原因还是因为个人的动态博客因为资金问题停止运营 ||苦逼中学生|| 从而转向了我之前以为技术问题而抛弃的静态博客,至少现在GitHub、GitHubPages、Vercel还是免费的,然鹅这就引发了一个非常严重的问题,我的静态资源扔到哪?
有关于图片的存储和调用,在每个前后端分离的博客程序都是需要去解决的问题,虽然我当前使用的Mix-Space拥有储存静态文件的功能,但限于后端服务器的带宽和储存问题,我还是需要去寻找一个比较合适的静态文件的储存方法
网上所给出的JSDelivr+GitHub当做图床,我个人表示jsd是用来加速静态资源的不错,但是过度的滥用反而会导致出现问题 目前JSDelivr完全寄了,滥用能不能趣亖①亖
虽然关于JSDelivr had lost their ICP license
的风波已经过去了一段时间,且jsd在国内又可以正常访问了,但是其速度还是不如之前快了,所以用其加速下css、js之类的文件速度还算可观,但是我这种一张图就将近500KB的人来说,全文使用jsd是不太可取的
我这篇文章还是仿照下CYF大佬的格式简单讲下现在的公共图床罢
注意,本站大多图片经过Shiro反代,速度是Vercel的速度,请将图片在新标签页中打开以测试速度
公共图床
SM.MS
任何一篇讲图床的文章绕不开的就是sm.ms,它真的算是太知名了()
但我给出的评价是
上传速度慢、访问速度慢
原图大小:518KB
这个图床也算是彻底死了,别问我为什么图能加载出来,这走的图片反代()
呦呵,又活了,但是裸访问图片直链会被重定向到图片页面(
感觉好像不太稳定,我个人不太推荐
聚合图床
这个图床访问速度还是挺可观的,也算是我用的最早的图床,但是访问它的的图片还要经过重定向,我个人是不太喜欢的
原图大小:1.77MB
路过图床
路过图床,tos中明确规定**卡通漫画(包括ACG/二次元/动漫游戏等);**是违规内容
原图大小:4.96MB
去不图床
杜老师运营的图床,没有免费套餐,需要付费,使用多吉云融合cdn
俺就不放图了,没得资金评测(
有图床
zkeq大佬运营的图床,压缩感觉有点严重,使用多吉云融合cdn
原图大小:88.1KB(图都快压缩没了!原图143KB)
没有技术力的白嫖
bilibili
原图大小:405KB
哔哩哔哩的图床,速度快上传快,缺点就是防盗链
看自己喜好了,加载速度都很可观
可以搭配sw使用,疑似有些特殊的B站链接并没有防盗链来着
// 对数组内所有地址进行请求,返回第一个成功的请求结果并打断其他请求
const 并发请求 = async (urls, url) => {
let controller = new AbortController()
const PauseProgress = async (res) => {
return new Response(await res.arrayBuffer(), {
status: res.status,
headers: res.headers,
})
}
if (!Promise.any) {
Promise.any = function (promises) {
return new Promise((resolve, reject) => {
promises = Array.isArray(promises) ? promises : []
let len = promises.length
let errs = []
if (len === 0)
return reject(new AggregateError('All promises were rejected'))
promises.forEach((promise) => {
promise.then(
(value) => {
resolve(value)
},
(err) => {
len--
errs.push(err)
if (len === 0) {
reject(new AggregateError(errs))
}
},
)
})
})
}
}
return Promise.any(
urls.map((urls) => {
return new Promise((resolve, reject) => {
fetch(urls, {
signal: controller.signal,
})
.then(PauseProgress)
.then((res) => {
if (res.status == 200 || res.status == 304 || res.status == 404) {
controller.abort()
resolve(res)
} else {
reject(res)
}
})
.catch((e) => reject(e))
})
}),
)
}
// 网络请求处理函数
if (req.url.includes('hdslb.com')) {
// 获取路径
const path = req.url.replace(/(https|http)?:\/\/(.[^/]+)/, '')
const 站点镜像源 = [
`https://i0.hdslb.com`,
`https://i1.hdslb.com/`,
`https://i2.hdslb.com/`,
`https://s1.hdslb.com/`,
`https://s2.hdslb.com`,
`https://s3.hdslb.com/`,
]
for (var i in 站点镜像源) {
站点镜像源[i] += path
}
return 并发请求(站点镜像源)
}
||叔叔有钱||
可以搭配PicGo使用,有现成的插件
Github+JSDelivr
网上的教程已经泛滥成灾了,就不必说了
羊毛从羊身上长出来,你得这里怼着一只羊使劲薅羊毛,把羊薅死了就没那么好的羊让你薅了
谢邀已经薅死了
NPM+各种NPM镜像
CYF大佬写了详细的教程:点击查看文章
我也不多过于赘述了
反正我的博客的图源就是b2桶和NPM来回切
现在也可以走npmmirror.com的解包服务,速度也还算行
原图大小:2.44MB
图片缓存
之前有一段时间也是用这个解决图片问题的,我个人喜欢images.weserv.nl提供的服务,这个服务商提供了非常丰富的图片后处理方法
原图大小:284KB
Alist/Cloudreve+各类网盘
怪,但是能用,需要有自己的服务器(
原图大小:2.88 MB
比较便宜的云服务商
多吉云
多吉云免费套餐10gb内免费,多出10gb的部分每gb每天0.003cny
但是支持第三方上传的标准版是不支持10gb免费套餐的
顺便吐槽下多吉云对象储存这个上传真的是太蛋疼了,我就不上预览图了,图片加载速度可以参考去不图床和有图床
应该是不记请求数的
缤纷云s4
根据官方文档
免费额度是前 100GiB 50GiB 存储、每月前20GB流量(每小时1GB)、每月前10万次请求(每日1万次)
储存费用如下
容量(GB) | 单价 |
---|---|
0 ~ 100 | 免费 |
101 ~ 1000 | 0.065元/GB/月 |
1001 ~ 10000 | 0.055元/GB/月 |
10001 ~ 100000 | 0.045元/GB/月 |
100000 + | 0.04元/GB/月 |
网络费用如下(CDN 出口流量 和 储存桶流出流量相同价格)
流量(GB) | 单价 |
---|---|
0 ~ 20 | 免费 |
21 ~ 1000 | 0.12元/GB/月 |
1001 ~ 10000 | 0.10元/GB/月 |
10001 ~ 100000 | 0.09元/GB/月 |
100000 + | 0.08元/GB/月 |
请求费用如下
储存桶请求费用(CDN请求当前不计费)
请求(万次) | 单价 |
---|---|
0 ~ 10万次 | 免费 |
11万次+ | 0.02元/万次/月 |
当前博主就在使用该服务,体验还算可以,国外使用的话其原生cdn并不好用,推荐挂上cloudflare国外访问参考网宿cdn,目前访问效果还算一般,但还是推荐外挂cloudflare
其缺点也在官方文档点出
- 性能低于 OSS 标准
- 目前只有浙江可用区等
原图大小:5MB
使用的cdn是百度云cdn(是百度云加速还是百度智能云cdn不太确定)cname去的bdydns.com,但ping网址是去的hzywinf.com,俺也不太知道(
2023年4月11日DogeCast(Bitiful)对于cdn服务进行迁移,全面更换网宿cdn
CloudFlare R2
目前博主使用的是CloudFlare R2 的方案
详细可以看
不记下行带宽且每月1000w的b类操作(即下载操作,当 Cloudflare R2 缓存命中(cache hit)后访问图片时,仍然会计入 B 类操作。)
BackBlazeb
可以去看看我转载CYFan大佬的 白嫖!10GB免流海外BackBlaze对象存储【可套CDN】
尾语
无论怎样,毕竟数据无价,推荐进行多端备份,以保证自己图片不会丢失
但是毕竟静态博客嘛,能白嫖就白嫖.jpg,不寒颤
这篇文章等我又发现了什么优秀的可以白嫖的就更新()
夜深了,祝自己好梦