天翔TNXGの空间站

关于图片储存的那些事

2022-04-10 09:50预计阅读时间: 3 分钟
/ ,
,
144
2

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 ~ 10000.065元/GB/月
1001 ~ 100000.055元/GB/月
10001 ~ 1000000.045元/GB/月
100000 +0.04元/GB/月

网络费用如下(CDN 出口流量 和 储存桶流出流量相同价格)

流量(GB)单价
0 ~ 20免费
21 ~ 10000.12元/GB/月
1001 ~ 100000.10元/GB/月
10001 ~ 1000000.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,不寒颤

这篇文章等我又发现了什么优秀的可以白嫖的就更新()

夜深了,祝自己好梦

关于图片储存的那些事
Author天翔TNXG
Update date2024-07-11