在 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 刷新页面来体验这个缓存优化
- 无缓存 https://github.com/gkd-kit/gkd/tree/7e93cfef17ef229029ae21f4dbe5dc8fb8e17317
- 有缓存 https://github.com/gkd-kit/gkd/tree/1481bf84ed248090bd5098912484ba161f82c221
Leave a Reply Cancel reply