🐛 问题描述 (Problem Description)
在访问博客文章《小笠原晴香——旧时代的继承者》时(及其他包含图片的文章),发现内嵌图片加载非常缓慢,甚至经常无法显示。
通过浏览器开发者工具分析,发现图片资源直接托管在 hibikilogy.github.io 下:
- 示例图片地址:
https://hibikilogy.github.io/images/2025-02-21/1.png
- 现象:由于
github.io 域名在中国大陆地区的 DNS 解析不稳定及网络延迟较高,导致图片加载超时或速度极慢,严重影响阅读体验。
💡 建议解决方案 (Suggested Solutions)
为了提升国内用户的访问速度和稳定性,同时兼顾多人协作的便利性,建议考虑以下两种优化方案:
方案 A:使用 jsDelivr 加速现有资源(成本最低,见效快)
jsDelivr 是一个免费且对国内访问优化较好的公共 CDN,它可以代理 GitHub 仓库的内容。
无需更改图片存储位置,只需在生成文章或构建站点时,将图片链接替换为 jsDelivr 格式即可。
修改前:
<img src="https://hibikilogy.github.io/images/2025-02-21/1.png" ...>
修改后:
<img src="https://cdn.jsdelivr.net/gh/hibikilogy/hibikilogy.github.io@main/images/2025-02-21/1.png" ...>
此方案存在一个问题:缓存效率低:图片与源码混合在一起,每次代码构建都会重新处理图片资源,无法利用 CDN 的长期缓存优势。(每次CDN更新大约在几小时到一天不等)
方案 B:建立独立图床仓库 + CI/CD @自动化(最佳长期方案)
考虑到本项目是多人协作,要求每位贡献者手动配置本地上传工具(如 PicGo)会增加贡献门槛。建议采用新的自动化流程:
- 新建独立仓库:创建一个专门的公共仓库(如
blog-images)用于集中存储所有图片。
- 配置 GitHub Actions:
- 监听主仓库的
push 或 pull_request 事件。
- 自动扫描新增/修改的图片文件。
- 自动将图片上传至
blog-images 仓库。
- 关键步骤:自动将 Markdown 文件中的本地相对路径(如
)替换为 jsDelivr 加速链接(如 )。
- 优势:
- 零门槛:贡献者只需像往常一样在本地插入图片并提交,无需任何额外配置。
- 高性能:图片与源码分离,利用 CDN 强缓存,加载速度极快。
- 易维护:图片资源集中管理,便于后续迁移或备份。
实施伪代码示例 (GitHub Actions):
jobs:
upload-images:
steps:
- uses: actions/checkout@v4
- name: Upload & Replace
run: |
# 1. 扫描新图片
# 2. 调用 picgo 上传到独立仓库
# 3. 正则替换 Markdown 中的图片链接
# 4. 自动提交修改后的 Markdown 文件
🐛 问题描述 (Problem Description)
在访问博客文章《小笠原晴香——旧时代的继承者》时(及其他包含图片的文章),发现内嵌图片加载非常缓慢,甚至经常无法显示。
通过浏览器开发者工具分析,发现图片资源直接托管在
hibikilogy.github.io下:https://hibikilogy.github.io/images/2025-02-21/1.pnggithub.io域名在中国大陆地区的 DNS 解析不稳定及网络延迟较高,导致图片加载超时或速度极慢,严重影响阅读体验。💡 建议解决方案 (Suggested Solutions)
为了提升国内用户的访问速度和稳定性,同时兼顾多人协作的便利性,建议考虑以下两种优化方案:
方案 A:使用 jsDelivr 加速现有资源(成本最低,见效快)
jsDelivr 是一个免费且对国内访问优化较好的公共 CDN,它可以代理 GitHub 仓库的内容。
无需更改图片存储位置,只需在生成文章或构建站点时,将图片链接替换为 jsDelivr 格式即可。
修改前:
<img src="https://hibikilogy.github.io/images/2025-02-21/1.png" ...>
修改后:
<img src="https://cdn.jsdelivr.net/gh/hibikilogy/hibikilogy.github.io@main/images/2025-02-21/1.png" ...>
此方案存在一个问题:缓存效率低:图片与源码混合在一起,每次代码构建都会重新处理图片资源,无法利用 CDN 的长期缓存优势。(每次CDN更新大约在几小时到一天不等)
方案 B:建立独立图床仓库 + CI/CD @自动化(最佳长期方案)
考虑到本项目是多人协作,要求每位贡献者手动配置本地上传工具(如 PicGo)会增加贡献门槛。建议采用新的自动化流程:
blog-images)用于集中存储所有图片。push或pull_request事件。blog-images仓库。)替换为 jsDelivr 加速链接(如)。实施伪代码示例 (GitHub Actions):