静态资源存放在 `public` 目录

Next.js 可以在根目录下的 public 文件夹中托管静态文件(如图片)。public 目录中的文件可以通过代码从基础 URL (/) 开始引用。

例如,文件 public/avatars/me.png 可以通过访问 /avatars/me.png 路径查看。显示该图片的代码可能如下:

avatar.js
import Image from 'next/image'

export function Avatar({ id, alt }) {
  return <Image src={`/avatars/${id}.png`} alt={alt} width="64" height="64" />
}

export function AvatarOfMe() {
  return <Avatar id="me" alt="A portrait of me" />
}

缓存机制

由于 public 文件夹中的资源可能会发生变化,Next.js 无法安全地缓存这些资源。默认应用的缓存头是:

Cache-Control: public, max-age=0

机器人协议、网站图标及其他

对于静态元数据文件,如 robots.txtfavicon.ico 等,您应该使用 app 文件夹中的特殊元数据文件

须知:

  • 目录必须命名为 public。该名称不可更改,并且是唯一用于托管静态资源的目录。
  • 只有构建时存在于 public 目录中的资源才会被 Next.js 托管。请求时添加的文件将不可用。我们建议使用第三方服务(如 Vercel Blob)进行持久化文件存储。

On this page