V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lisongeee
V2EX  ›  分享创造

优化 Github 图片复用缓存加载

  •  
  •   lisongeee ·
    lisonge · 126 天前 · 2627 次点击
    这是一个创建于 126 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 Github 评论输入框 粘贴图片时会自动上传生成类似下面链接

    https://github.com/user-attachments/assets/2a0a7787-f2dd-4529-a885-93f3b8c857c3
    

    这种方式简单直接,不需要指定仓库,所以很多人也喜欢在 Github MD 文档里引入这种链接

    但是这种方式却有一个缺点,在这之前需要说一下 Github 如何处理 MD 文件中的图片外链

    主要看链接 URL 的 host 是不是 Github 自己的,如果不是,转为一个代理链接,类似下面

    https://camo.githubusercontent.com/ba4d2334ee66f91a6947cc52e81f788488ab47f34fd6d4dacc2dbbced3db6b98/68747470733a2f2f652e676b642e6c692f32613061373738372d663264642d343532392d613838352d393366336238633835376333
    

    问题就出现在这,根据这个策略,上面粘贴上传生成的链接不会被 Github 转换,也就是原始链接

    但是这个链接会返回 302 临时重定向到下面的链接

    https://github-production-user-asset-6210df.s3.amazonaws.com/38517192/440014540-2a0a7787-f2dd-4529-a885-93f3b8c857c3.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20250504%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250504T142228Z&X-Amz-Expires=300&X-Amz-Signature=99fc928c9d601b55d2d9d7bcd588b1e0d874838e808c03725d69dfcbc76b3383&X-Amz-SignedHeaders=host
    

    这直接导致浏览器 无法使用磁盘缓存,每次打开都得重新加载图片资源耗费流量

    某些贴近普通用户类开源项目会在文档教程里包含很多示例图片,但是这个策略导致用户阅读体验不太好


    解决方式很简单,就是使用外链,Github 会对外链使用缓存链接,也就是上面那个代理链接

    但是这样就不能享受上面粘贴上传的便利了,其实也有两者皆得的方法

    将链接里的 github.com/user-attachments/assets 替换为 e.gkd.li,最终链接如下

    https://e.gkd.li/2a0a7787-f2dd-4529-a885-93f3b8c857c3
    

    e.gkd.li 部署了一个重定向服务,会自动重定向到 github.com/user-attachments/assets

    而 Github 将此视为外链,转为代理链接,浏览器最终显示会利用磁盘缓存避免重复流量消耗了


    你可以打开下面两个链接然后分别按下 F5 刷新页面来体验这个缓存优化

    img

    第 1 条附言  ·  126 天前
    借助 cloudflare 快速搭建自己的免费重定向服务(需要域名)

    打开 cloudflare 帐户主页 - 域 - 随便进入一个域名 - 规则 - 创建规则 - 重定向规则

    3 条回复    2025-05-04 23:55:25 +08:00
    1423
        1
    1423  
       126 天前
    才知道 Github 图片没有缓存, 岂不是白白浪费钱?
    重定向服务有点风险,而且修改 url 只对内容生产有效,对现存的海量图片无解,可惜
    lisongeee
        3
    lisongeee  
    OP
       126 天前
    @1423 #1

    > 对现存的海量图片无解,可惜

    我只是优化自己文档时想出来的,当然不能优化其它仓库

    > 重定向服务有点风险

    看第一条 append

    ---

    @Puteulanus #2

    呃,你这个链接把我的 svg 图片变成了 jpg 图片,此外我的 svg 图片还适配了深色模式(具体自行查看源码),在你的服务下都没了

    简简单单包一层重定向服务才是最简单的
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3741 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 05:09 · PVG 13:09 · LAX 22:09 · JFK 01:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.