Optimierung Ihrer Next.js-Anwendung für die Produktion

Bevor Sie Ihre Next.js-Anwendung in die Produktion überführen, gibt es einige Optimierungen und Muster, die Sie für die beste Benutzererfahrung, Performance und Sicherheit implementieren sollten.

Diese Seite bietet Best Practices, die Sie als Referenz verwenden können, während Sie Ihre Anwendung entwickeln und bevor Sie in die Produktion gehen, sowie die automatischen Next.js-Optimierungen, die Sie kennen sollten.

Automatische Optimierungen

Diese Next.js-Optimierungen sind standardmäßig aktiviert und erfordern keine Konfiguration:

  • Server Components (Server-Komponenten): Next.js verwendet standardmäßig Server-Komponenten. Server-Komponenten werden auf dem Server ausgeführt und benötigen kein JavaScript für das Rendering auf dem Client. Daher haben sie keine Auswirkung auf die Größe Ihrer clientseitigen JavaScript-Bundles. Sie können bei Bedarf Client Components (Client-Komponenten) für Interaktivität verwenden.
  • Code-Splitting (Code-Aufteilung): Server-Komponenten ermöglichen eine automatische Code-Aufteilung nach Routensegmenten. Ziehen Sie auch Lazy Loading (verzögertes Laden) von Client-Komponenten und Bibliotheken von Drittanbietern in Betracht, wo angebracht.
  • Prefetching (Vorabrufen): Wenn ein Link zu einer neuen Route in den Viewport des Benutzers gelangt, ruft Next.js die Route im Hintergrund vorab. Dadurch wird die Navigation zu neuen Routen nahezu verzögerungsfrei. Sie können das Prefetching bei Bedarf deaktivieren.
  • Static Rendering (Statisches Rendering): Next.js rendert Server- und Client-Komponenten beim Build statisch auf dem Server und speichert das gerenderte Ergebnis zwischen, um die Performance Ihrer Anwendung zu verbessern. Sie können bei Bedarf Dynamic Rendering (Dynamisches Rendering) für bestimmte Routen aktivieren.
  • Caching (Zwischenspeicherung): Next.js speichert Datenanfragen, gerenderte Ergebnisse von Server- und Client-Komponenten, statische Assets und mehr zwischen, um die Anzahl der Netzwerkanfragen an Ihren Server, Datenbank und Backend-Dienste zu reduzieren. Sie können das Caching bei Bedarf deaktivieren.

Diese Standardeinstellungen sollen die Performance Ihrer Anwendung verbessern und die Kosten sowie die Menge der bei jeder Netzwerkanfrage übertragenen Daten reduzieren.

Während der Entwicklung

Während Sie Ihre Anwendung entwickeln, empfehlen wir die Verwendung der folgenden Funktionen, um die beste Performance und Benutzererfahrung zu gewährleisten:

Routing und Rendering

Gut zu wissen: Partial Prerendering (Partielles Vorrendering, experimentell) ermöglicht es, Teile einer Route dynamisch zu gestalten, ohne die gesamte Route in dynamisches Rendering zu versetzen.

Datenabruf und Caching

UI und Barrierefreiheit

  • Font Module (Schriftarten-Modul): Optimieren Sie Schriftarten mit dem Font Module, das Ihre Schriftartdateien automatisch mit anderen statischen Assets hostet, externe Netzwerkanfragen entfernt und Layout Shift (Layoutverschiebung) reduziert.
  • <Image>-Komponente: Optimieren Sie Bilder mit der Image-Komponente, die Bilder automatisch optimiert, Layoutverschiebungen verhindert und sie in modernen Formaten wie WebP bereitstellt.
  • <Script>-Komponente: Optimieren Sie Skripte von Drittanbietern mit der Script-Komponente, die Skripte automatisch verzögert und verhindert, dass sie den Hauptthread blockieren.
  • ESLint: Verwenden Sie das integrierte eslint-plugin-jsx-a11y-Plugin, um Barrierefreiheitsprobleme frühzeitig zu erkennen.

Sicherheit

Metadaten und SEO

  • Metadata API (Metadaten-API): Verwenden Sie die Metadata API, um die Suchmaschinenoptimierung (SEO) Ihrer Anwendung durch das Hinzufügen von Seitentiteln, Beschreibungen und mehr zu verbessern.
  • Open Graph (OG) images (OG-Bilder): Erstellen Sie OG-Bilder, um Ihre Anwendung für das Teilen in sozialen Medien vorzubereiten.
  • Sitemaps und Robots: Helfen Sie Suchmaschinen beim Crawlen und Indizieren Ihrer Seiten, indem Sie Sitemaps und Robots-Dateien generieren.

Typsicherheit

  • TypeScript und TS Plugin (TypeScript-Plugin): Verwenden Sie TypeScript und das TypeScript-Plugin für bessere Typsicherheit und um Fehler frühzeitig zu erkennen.

Vor der Veröffentlichung in der Produktion

Bevor Sie in die Produktion gehen, können Sie next build ausführen, um Ihre Anwendung lokal zu erstellen und Build-Fehler zu erkennen, und dann next start ausführen, um die Performance Ihrer Anwendung in einer produktionsähnlichen Umgebung zu messen.

Core Web Vitals

  • Lighthouse: Führen Sie Lighthouse im Inkognito-Modus aus, um ein besseres Verständnis dafür zu erhalten, wie Ihre Benutzer Ihre Website erleben werden, und um Verbesserungsmöglichkeiten zu identifizieren. Dies ist ein simulierter Test und sollte mit der Betrachtung von Felddaten (wie Core Web Vitals) kombiniert werden.

Analyse der Bundles

Verwenden Sie das @next/bundle-analyzer-Plugin, um die Größe Ihrer JavaScript-Bundles zu analysieren und große Module und Abhängigkeiten zu identifizieren, die die Performance Ihrer Anwendung beeinträchtigen könnten.

Zusätzlich können die folgenden Tools Ihnen helfen, die Auswirkungen des Hinzufügens neuer Abhängigkeiten zu Ihrer Anwendung zu verstehen: