Article

All About Image Storage

AI Summary

The author revised the previous article on February 13, 2024, discussing the static resource storage problem encountered after switching the personal blog to a static blog due to funding issues. The article evaluates multiple public image hosts, such as SM.MS, Superbed, Imagehub, 7bu, Youtuchuang, Bilibili image host, Github+JSDelivr, NPM+various NPM mirrors, and image caching. The author shares the pros and cons and applicable scenarios of different image hosts, and provides some code examples. The article also mentions some relatively cheap cloud service providers, such as DogeCloud, Bitiful Cloud s4, CloudFlare R2, and BackBlaze. The author suggests multi-end backup to ensure images are not lost, and expresses the intention to continue updating the article to share more excellent free resources.

TechnologyPublished at·Updated at·Language Chinese -> English·AI Translation
#Object Storage#Freebies#Original
Time CapsuleTime-sensitive content

This post was last updated 1 years 5 months ago

The article explicitly mentions a specific date (February 2024) and relies heavily on the current operational status, free tiers, and regional accessibility of volatile third-party tech services like JSDelivr, Vercel, and SM.MS.

February 13, 2024revising this outdated articleare still free nowCurrently, JSDelivr is completely deadhas passed for a whilejsd can be accessed normally in China againcurrent public image hostsalive again

PrefaceH1#

It's been over a year since I last talked about file storage after reposting CYF's article

Yeah. It is now February 13, 2024, and I am revising this outdated article while restoring archived posts.

Why talk about this all of a sudden? Actually, the main reason is that my personal dynamic blog stopped operating due to funding issues miserable middle school student, so I switched to the static blog I previously abandoned due to technical problems. At least GitHub, GitHubPages, and Vercel are still free now, but this leads to a very serious problem: where do I throw my static resources?

Regarding the storage and calling of images, it is a problem that needs to be solved in every front-end and back-end separated blog program. Although the Mix-Space I am currently using has the function of storing static files, limited by the bandwidth and storage issues of the backend server, I still need to find a relatively suitable static file storage method.

As for the JSDelivr+GitHub image hosting solution found online, I personally think jsd is good for accelerating static resources, but excessive abuse will lead to problems. Currently, JSDelivr is completely dead, can the abusers please go to hell.

Although the storm about JSDelivr had lost their ICP license has passed for a while, and jsd can be accessed normally in China again, its speed is still not as fast as before. So it's still decent to use it to accelerate files like css and js, but for someone like me whose single image is nearly 500KB, using jsd for the whole text is not very advisable.

I will follow the format of the great CYF and briefly talk about the current public image hosts in this article.

Note: Most images on this site are reverse-proxied by Shiro, so the speed is Vercel's speed. Please open the images in a new tab to test the speed.

Public Image HostsH1#

SM.MSH2#

Any article talking about image hosts cannot bypass sm.ms, it is really too famous ()

But my evaluation is:

Slow upload speed, slow access speed.

Original image size: 518KB

This image host is also considered completely dead, don't ask me why the image can load, this goes through an image reverse proxy ()

Oh hey, it's alive again, but bare access to the image direct link will be redirected to the image page (

It feels like it's not very stable, I personally don't recommend it much.

Superbed (聚合图床)H2#

The access speed of this image host is quite decent, and it is also one of the earliest image hosts I used, but accessing its images requires redirection, which I personally don't like very much.

Original image size: 1.77MB

Imagehub (路过图床)H2#

For Imagehub, the tos clearly stipulates that cartoons/comics (including ACG/2D/anime games, etc.); are violating content.

Original image size: 4.96MB

7bu (去不图床)H2#

The image host operated by Teacher Du, there is no free plan, requires payment, uses DogeCloud merged cdn.

I won't put an image here, no funds to review (

Youtuchuang (有图床)H2#

The image host operated by the great zkeq, the compression feels a bit severe, uses DogeCloud merged cdn.

Original image size: 88.1KB (The image is almost compressed into nothing! Original image is 143KB)

Zero-Skill Free Tier HacksH1#

bilibiliH2#

Original image size: 405KB

Bilibili's image host, fast speed and fast upload, the disadvantage is anti-hotlinking.

Depends on your preference, the loading speed is quite impressive.

Can be used with sw, it seems that some special Bilibili links do not have anti-hotlinking.

javascript
// 对数组内所有地址进行请求,返回第一个成功的请求结果并打断其他请求
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 并发请求(站点镜像源)
}

Uncle has money

Can be used with PicGo, there are ready-made plugins.

Github+JSDelivrH2#

There is an abundance of tutorials online, so there's no need to say more.

Wool grows on sheep, if you keep shearing the same sheep hard here and shear it to death, there won't be such good sheep for you to shear.

Thanks for the invitation, it's already been sheared to death.

NPM+Various NPM MirrorsH2#

The great CYF wrote a detailed tutorial: Click to view the article

I won't elaborate too much either.

Anyway, the image source of my blog switches back and forth between the b2 bucket and NPM.

Now you can also use the unpacking service of npmmirror.com, the speed is also okay.

Due to some special reasons, this service was canceled.

Image CacheH2#

I also used this to solve image problems for a while before. I personally like the services provided by images.weserv.nl; this service provider offers very rich image post-processing methods.

Original image size: 284KB

Alist/Cloudreve+Various Cloud DrivesH2#

Weird, but usable, requires having your own server (

Here I'm just providing a solution concept.

Relatively Cheap Cloud Service ProvidersH1#

DogeCloud (多吉云)H2#

DogeCloud's free plan is free within 10GB, and the part exceeding 10GB is 0.003 CNY per GB per day.

However, the standard version that supports third-party uploads does not support the 10GB free plan.

By the way, let me complain that DogeCloud's object storage upload is really a pain in the ass. I won't put up a preview image. You can refer to 7bu and Youtuchuang for the image loading speed.

It probably doesn't count the number of requests.

Bitiful Cloud s4 (缤纷云s4)H2#

Revised on November 24, 2024, based on comments:

The free traffic has been reduced from 100GiB in the initial test to 50GiB.

The free bucket egress traffic has been reduced from 20GB to 10GB.

The free bucket request count remains 100,000 times.

The free CDN traffic has been reduced to 10GB.

It is necessary to note that the free quotas for S4 Request Fee and S4 Origin-pull Request Fee are independently 100,000 times/month each.

See Storage Pricing - Bitiful Cloud Documentation for details.

CloudFlare R2H2#

Currently, the blogger is using the CloudFlare R2 solution.

For speed details, please refer to the image below:

It doesn't meter downstream bandwidth and offers 10 million Class B operations per month (i.e., download operations; when accessing images after a Cloudflare R2 cache hit, it is still counted as a Class B operation).

See Pricing | Cloudflare R2 docs for details.

BackBlazebH2#

You can check out my repost of the great CYFan's Freebie! 10GB Free Traffic Overseas BackBlaze Object Storage [Can be wrapped with CDN]

EpilogueH1#

No matter what, after all, data is priceless. It is recommended to perform multi-end backups to ensure your images will not be lost.

In fact, image hosts are not only used by us bloggers; many content creators and developers also need image hosts to solve image storage problems.

As a fast and free storage method, an image host is undoubtedly very convenient.

Remember, if you use free services, you must also consider rationality to avoid being banned or rate-limited. After all, most free image host providers can only support limited storage and bandwidth without profitability.

I will update this article when I discover any other excellent freebies ()

It's late at night, wishing myself sweet dreams.

Copyright & License
© 2022 - 2024 天翔TNXG
All About Image Storage
CCCreative Commons License
BYAttribution: You must give appropriate credit
NCNonCommercial: You may not use the material for commercial purposes
SAShareAlike: You must distribute your contributions under the same license
License:BY-NC-SA