理解Next.js中next/image的优化过程

uqdfh47h  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(129)

我目前正在使用Next.js和next/image组件进行图像渲染。我一直在使用它来优化应用程序中的图像加载,但我对它如何在后台工作的技术细节很好奇。具体来说,我想知道它是否在优化过程中进行任何API调用。
以下是我目前的理解:

  • next/image提供了延迟加载、响应式图像和格式选择等功能来优化图像加载。
  • 它在构建过程中以不同的大小和格式生成多个版本的图像。
  • 它根据浏览器的支持选择最合适的图像格式。
  • 默认情况下,它支持延迟加载,您可以指定响应式图像尺寸。

然而,我无法找到有关next/image在此优化过程中是否进行任何API调用的信息。我的目标是更深入地了解其内部工作原理。任何关于此主题的见解或资源都将非常感谢。

af7jpaap

af7jpaap1#

当你有这样的代码时:

<Image width={180} height={37} src="/test.jpg" />

字符串
当组件被渲染时,默认加载器会将src url更改为/_next/image?url=/test.jpg&w=384&q=75,其中包含优化所需的所有参数,如质量和宽度。在服务器端,NextJS将使用sharp优化和裁剪/调整图像大小。这些优化后的图像将被缓存,以便后续对同一图像的请求不需要再次优化。如果您在Vercel上托管,它将使用Vercel自己的图像优化服务。
请注意,也可以为图像优化创建自定义加载器。这将允许您使用任何您想要的图像优化服务。自定义加载器只需为图像组件提供一个函数即可实现,该函数接受src,宽度,质量并返回加载优化图像的URL。通常,您可以像默认加载器一样将质量和宽度作为URL参数。

const imageLoader = ({ src, width, quality }) => {
  return `https://example.com/${src}?w=${width}&q=${quality || 75}`
}

相关问题