在 NextJS 中预加载图像

问题描述 投票:0回答:3

我们正在使用带有静态站点生成器的 NextJS 9.3.2 框架,即 SSG,并引入了 Google Lighthouse 6 Largest Contentful Paint (LCP),这正在影响我的站点性能得分。大多数网站在首屏内容中都有英雄图片。

所以我希望预加载图像以减少 LCP 的时间。你们能指导一下我如何使用 SSG 在 NextJS 中预加载大英雄图像吗?

reactjs next.js preload
3个回答
7
投票

正如 HawaiiFi 建议,您可以预加载图像。

在 Next.js 中,您可以通过向 next.js 的

<link rel="preload" ...>
组件添加
<Head>
来实现此目的。

import Head from "next/head";

// Inside one of the components that loads on your page:
<Head>
  <link
    rel="preload"
    href="/path/to/image.ext"
    as="image"
  />
</Head>

5
投票

您应该升级您的Next.js并使用图像组件。 它将做以下伟大的事情 -

  1. 延迟加载
  2. 新的 Webp 格式
  3. 根据设备尺寸动态调整图像大小
  4. 压缩图像
  5. 在 props 中设置 pyrotiy true 以预加载折叠图像上方。

实施它,看看灯塔得分的大幅上升。

虽然它有一些限制,例如静态导出和占位符图像当前不可用,但它仍然很好用。 对于占位符图像,您可以使用一些额外的库,例如 https://github.com/joe-bell/plaiceholder


1
投票

在包含需要预加载的英雄图像的组件中,使用 next/head 并简单地预加载该图像。

我不会使用下一个/图像。它比其他动态服务器图像大小的解决方案慢。

那是另一回事了。您应该使用内置 HTML 功能根据浏览器大小加载图像。

© www.soinside.com 2019 - 2024. All rights reserved.