R2 出站流量免费,这一条就足以让它成为图床的默认选项。本文完整走一遍:建桶、绑自定义域、申请 S3 凭据、配 CORS、写预签名直传代码,以及复制直链 / Markdown / HTML 的落地细节。含签名把 Content-Type 签进去导致 403 这类真实坑位。
Next.js 站点控制台随机出现 A tree hydrated but some attributes didn't match,且冷缓存首个页面干净、之后页面必报?根因不在你的组件,而是 GTM 拉起的 AdSense 自动广告在 React 水合前向 head 注入脚本,位置撞上了内联 GTM script。本文讲清这个时序谜题、一行修复方案,以及用 Playwright 抓完整报错 diff 的诊断技巧。