关于图片储存的那些事
序言
自上次搬运了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的解包服务,速度也还算行
因为某些特殊的原因这个服务被取消了
图片缓存
之前有一段时间也是用这个解决图片问题的,我个人喜欢images.weserv.nl提供的服务,这个服务商提供了非常丰富的图片后处理方法

原图大小:284KB
Alist/Cloudreve+各类网盘
怪,但是能用,需要有自己的服务器(
这里只提供一个解决方案
比较便宜的云服务商
多吉云
多吉云免费套餐10gb内免费,多出10gb的部分每gb每天0.003cny
但是支持第三方上传的标准版是不支持10gb免费套餐的
顺便吐槽下多吉云对象储存这个上传真的是太蛋疼了,我就不上预览图了,图片加载速度可以参考去不图床和有图床
应该是不记请求数的
缤纷云s4
根据评论2024年11月24日修订:
免费流量已经从初测的100GiB削减到了50GiB
免费桶出口流量从20GB削减到了10GB
免费桶请求次数依旧是10万次
免费CDN流量削减到了10GB
有必要注意一下的是S4 请求费
和 S4 回源请求费
免费额度为各自独立的 10万次/月
可以详见存储费用 - 缤纷云文档
CloudFlare R2
目前博主使用的是CloudFlare R2 的方案
速度详细可以看下面这张图
不记下行带宽且每月1000w的b类操作(即下载操作,当 Cloudflare R2 缓存命中(cache hit)后访问图片时,仍然会计入 B 类操作。)

可以详见Pricing | Cloudflare R2 docs
BackBlazeb
可以去看看我转载CYFan大佬的 白嫖!10GB免流海外BackBlaze对象存储【可套CDN】
尾语
无论怎样,毕竟数据无价,推荐进行多端备份,以保证自己图片不会丢失
其实图床并不只有我们这些博客在用,很多内容创作者以及开发者也都需要图床来解决图片存储的问题。
图床作为一个快速又免费的储存方式,无疑是非常方便的。
记住,如果你使用免费服务也要考虑合理性,避免被封杀或被限速,毕竟大部分的免费图床提供商在没有盈利的情况下只能支持有限的存储和带宽。
这篇文章等我又发现了什么优秀的可以白嫖的就更新()
夜深了,祝自己好梦