爱意满满的作品展示区。
iqoo

免费 CDN —— 将整个网站打包成一张图片

  •  3
     
  •   iqoo · Sep 13, 2021 · 5148 views
    This topic created in 1877 days ago, the information mentioned may be changed or developed.

    免费空间

    不少人为了节省网站流量费用,使用图床、相册作为免费 CDN 。但这只适用于图片资源,其他例如 JS/CSS/HTML 文件显然无法使用。

    那么有没有什么办法,让任意文件都能通过图床加速?

    编码解码

    其实很简单,将文件编码成图片像素即可,运行时再通过 JS 进行解码。

    但这么做是否需要修改网站资源的加载方式?其实不需要。我们可通过 Service Worker 拦截网页所有 HTTP 请求,然后使用资源包中的文件进行响应,这样无需任何修改即可使用。

    安装过程

    既然要调用 Service Worker,那么是否得在网页中加入额外的脚本?其实不需要。我们可使用这样一个机制 —— 用户访问任意路径,后端都返回 Service Worker 安装页;安装完成后页面自动刷新,之后的请求即可被 Service Worker 拦截,然后从资源包中提取文件。

    实现也很简单,网站最终只需发布 404.html 和 sw js 即可 —— 前者用于 Service Worker 安装,后者用于 Service Worker 脚本。这样用户访问任意路径,即可先安装 Service Worker,自动刷新后出现原始内容,例如:

    fanhtml5.github.io/

    首次访问时页面会自动刷新,然后出现原始文件。

    该站点原始文件有多个文件,总共数 MB ( github.com/fanhtml5/test-site )

    但最终发布的文件只有两个,压缩后不到 2kB ( github.com/fanhtml5/fanhtml5.github.io )

    安全稳定

    为了提高稳定性,可使用多个站点的图片,如果加载失败或超时则使用下一个;为了提高安全性,可对数据进行 Hash 校验,不正确则使用下一个。

    为了防止泄露 Referrer 以及绕过外链限制,我们可使用 referrer-policy 对 Referer 进行隐藏。

    为了防止 Origin 请求头泄露站点域名,我们可通过 Data URI 创建的 iframe 加载图片,这样该请求头就变成了 null 值,最大程度减少隐私泄露。

    19 replies  •  2021-09-22 16:58:37 +08:00
    iqoo
    iqoo
    OP
    Sep 13, 2021
    1
    liuidetmks
    liuidetmks
    Sep 13, 2021
    2
    把 js 编码成图片,如果图床压缩了,会有损失吗?
    mritd
    mritd
    Sep 13, 2021 via iPhone
    3
    我擦 真的会玩
    yafoo
    yafoo
    Sep 13, 2021 via Android
    4
    为了节省流量,真是拼了,以前也有各种节省流量的想法
    whileFalse
    whileFalse
    Sep 14, 2021 via iPhone
    5
    有这技术多花点钱不行么
    i0error
    i0error
    Sep 14, 2021
    6
    思路清奇......
    iqoo
    iqoo
    OP
    Sep 14, 2021
    7
    @liuidetmks 无损压缩就没事。担心有损压缩的话可以多准备几个图片做冗余。
    lizhenda
    lizhenda
    Sep 14, 2021
    8
    这样可以白嫖图床来当 CDN 用吗~
    ragnaroks
    ragnaroks
    Sep 14, 2021
    9
    头条:早晚被你们薅死
    scyuns
    scyuns
    Sep 15, 2021
    10
    还是你们会玩呀
    Clash
    Clash
    Sep 16, 2021
    11
    会玩
    horizon
    horizon
    Sep 16, 2021
    12
    厉害了
    Themyth
    Themyth
    Sep 16, 2021❤️1
    13
    @whileFalse 这样才有意思啊!这样才有乐趣啊!谁在乎钱不钱的。。
    cweijan
    cweijan
    Sep 16, 2021
    14
    好家伙, 白嫖 CDN 属于是
    pC0oc4EbCSsJUy4W
    pC0oc4EbCSsJUy4W
    Sep 16, 2021
    15
    太牛逼了
    lumotian
    lumotian
    Sep 16, 2021
    16
    这样是不是可以越过墙
    steveway
    steveway
    Sep 17, 2021
    17
    真 tm 是个人才。。。
    iqoo
    iqoo
    OP
    Sep 18, 2021
    18
    其实很多年前就试验过,不过当时用的免费空间是 IFPS,没有图片有趣~

    www.v2ex.com/t/413092
    pkwenda
    pkwenda
    Sep 22, 2021
    19
    太有才了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1434 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 22:00 · PVG 06:00 · LAX 14:00 · JFK 17:00
    ♥ Do have faith in what you're doing.