Statische Assets im `public`-Verzeichnis

Next.js kann statische Dateien wie Bilder aus einem Ordner namens public im Stammverzeichnis bereitstellen. Dateien innerhalb von public können dann in Ihrem Code ausgehend von der Basis-URL (/) referenziert werden.

Beispielsweise kann die Datei public/avatars/me.png durch Aufrufen des Pfads /avatars/me.png angezeigt werden. Der Code zur Anzeige dieses Bildes könnte so aussehen:

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="Ein Porträt von mir" />
}

Caching

Next.js kann Assets im public-Ordner nicht sicher cachen, da sie sich ändern könnten. Die standardmäßig angewendeten Cache-Header lauten:

Cache-Control: public, max-age=0

Robots, Favicons und andere

Für statische Metadaten-Dateien wie robots.txt, favicon.ico usw. sollten Sie spezielle Metadaten-Dateien im app-Ordner verwenden.

Gut zu wissen:

  • Das Verzeichnis muss public heißen. Der Name kann nicht geändert werden und es ist das einzige Verzeichnis, das für statische Assets verwendet wird.
  • Nur Assets, die sich zum Zeitpunkt des Builds im public-Verzeichnis befinden, werden von Next.js bereitgestellt. Zur Laufzeit hinzugefügte Dateien sind nicht verfügbar. Für persistente Dateispeicherung empfehlen wir einen Drittanbieterdienst wie Vercel Blob.