Hosting images on my Astro blog with Cloudflare R2

问题:Astro 博客图片存储在 GitHub 仓库导致仓库体积和带宽成本不断增长。 方法:将图片迁移到 Cloudflare 的 Cloudflare R2 对象存储,通过自定义 CDN 域名提供图片访问以降低存储与带宽成本。

问题:使用 R2 等对象存储后缺少 Astro 内置的图片优化 (responsive images、格式转换)。 方法:使用脚本 + Sharp 生成多尺寸 (640 / 1200 / 1920 px) 的 .webp 图片,并通过 <picture> / srcset 在组件中实现 responsive images。

问题:Markdown 图片语法无法直接支持 CDN 响应式图片与尺寸控制。 方法:创建自定义 ImageCdn 组件生成 R2 CDN 图片 URL,并通过脚本将 Markdown ![]() 批量转换为组件调用以统一渲染逻辑。