Next.js 的 Image 组件提供了强大的图片优化和缓存功能:
📅 页面渲染时间:2025-12-17T09:54:09.448Z
本地图片在构建时会被自动优化和缓存,生成多个不同尺寸的版本。
原始图片:next.svg(使用 img 标签)
❌ 无优化、无缓存、无响应式
优化图片:next.svg(使用 Image 组件)
✅ 自动优化、缓存、响应式
使用 priority 属性的图片会立即加载,不使用懒加载。适用于 LCP 图片。
✅ 预期行为:
默认情况下,Image 组件使用懒加载,只在图片进入视口时才加载。
懒加载图片 #1(滚动到这里才会加载)
懒加载图片 #2(滚动到这里才会加载)
懒加载图片 #3(滚动到这里才会加载)
🔄 预期行为:
使用时间戳作为 seed,每次刷新页面都会显示不同的图片。
当前时间戳:1765965249448
🔴 预期行为:
Next.js 自动生成多个尺寸的图片,根据设备大小加载合适的版本。
小尺寸 (300x200)
中尺寸 (600x400)
大尺寸 (1200x800)
📱 预期行为:
打开 Network 面板,过滤 "Img" 类型
观察图片请求,应该看到状态码 200(从服务器下载)
再次观察图片请求,应该看到:
• 状态码 304(Not Modified,使用浏览器缓存)
• 或显示 "disk cache"(从磁盘缓存加载)
• Size 显示 "from disk cache" 或很小的字节数
点击 Network 中的图片请求,查看 Response Headers:
• Content-Type: image/webp(自动转换为 WebP)
• Cache-Control: public, max-age=60, must-revalidate(缓存 60 秒)
pnpm build && pnpm start在生产环境中,图片优化会缓存到 .next/cache/images 目录
.next/cache/images 目录// next.config.js
module.exports = {
images: {
minimumCacheTTL: 60, // 缓存时间(秒)
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
formats: ['image/webp'], // 优化格式
remotePatterns: [ // 允许的远程图片域名
{
protocol: 'https',
hostname: 'picsum.photos',
},
],
},
};priority 属性width 和 height 防止布局偏移next.config.js 中配置域名