位于 `public` 中的静态资源
Next.js 可以服务于静态文件,例如图像,这些文件位于根目录下的名为 public
的文件夹中。然后,您的代码可以通过从基本 URL(/
)开始引用 public
中的文件。
例如,可以通过访问 /avatars/me.png
路径来查看文件 public/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" />
}
缓存
Next.js 无法安全地缓存 public
文件夹中的资源,因为它们可能会更改。应用的默认缓存标头为
Cache-Control: public, max-age=0
机器人、Favicon 等
对于静态元数据文件,例如 robots.txt
、favicon.ico
等,您应该在 app
文件夹内使用 特殊的元数据文件。
需要了解
- 目录必须命名为
public
。名称无法更改,它是用于服务静态资源的唯一目录。- 只有在 构建时 位于
public
目录中的资源才会由 Next.js 提供服务。请求时添加的文件将不可用。我们建议使用第三方服务,例如 Vercel Blob 用于持久文件存储。
这有帮助吗?