概览Client Hints 允许浏览器传递设备像素比(DPR)与渲染宽度(Width),服务器据此选择合适的图片变体。Route Handlers 可设置 `Accept-CH` 与 `Vary`,实现高效图像投递。接口实现app/api/image/route.tsexport const runtime = 'edge' export async function GET(req: Request) { const dpr = Number(req.headers.get('sec-ch-dpr') || 1) const width = Number(req.headers.get('sec-ch-width') || 800) const q = dpr >= 2 ? 0.7 : 0.85 const targetW = Math.min(Math.max(width, 400), 1600) const url = `https://cdn.example.com/img/hero?w=${targetW}&q=${Math.round(q * 100)}` const img = await fetch(url) return new Response(img.body, { headers: { 'Content-Type': img.headers.get('content-type') || 'image/avif', 'Accept-CH': 'DPR, Width', 'Vary': 'Sec-CH-DPR, Sec-CH-Width', 'Cache-Control': 'public, max-age=600', }, }) } 治理要点设置 `Accept-CH` 提示浏览器发送 Client Hints;使用 `Vary` 保证缓存按 Hints 维度分割。对高 DPR 使用较低质量因子以平衡体积与视觉;控制宽度范围避免过度大图。与 `next/image` 或 CDN 变体生成协同,统一参数与缓存策略。验证与指标浏览器:Chrome 120+ 支持;其他浏览器退化为默认变体Next.js:15.0+;Edge Runtime:稳定图像加载效率更高;视觉质量与体积平衡良好

发表评论 取消回复