RuhaniSoftSOFTWARELÖSUNGEN
DE

Monat, Tag, Jahr · 10 min read

Laravel-Performance: 14 Wege, um Ihre Anwendung zu beschleunigen

Eine langsame Anwendung verursacht Kosten auf oft übersehene Weise. Besucher verlassen Seiten, die zu lange zum Laden brauchen, Mitarbeiter verlieren die Geduld mit trägen Dashboards, Suchmaschinen bevorzugen schnelle Websites und Server, die unnötig stark beansprucht werden, treiben die Hostingkosten in die Höhe. Laravel ist ein leistungsstarkes Framework und ermöglicht sehr schnelle Anwendungen, aber es macht nicht jede Anwendung automatisch schnell. Geschwindigkeit entsteht durch gute Entscheidungen, und einige wenige häufige Fehler sind die Hauptursache für Verlangsamungen.

Dieser Leitfaden zeigt vierzehn praktische Wege zur Verbesserung der Laravel-Performance – in der Reihenfolge, die sich in der Regel auszahlt: Zuerst messen, dann die Datenbank optimieren, anschließend Caching und Hintergrundverarbeitung hinzufügen und schließlich Framework und Infrastruktur optimieren. Er richtet sich an Entwickler und deren Manager. Jeder Abschnitt erklärt daher nicht nur die Hintergründe, sondern auch die konkreten Maßnahmen. Wenn Sie sich nicht sicher sind, ob Ihre Anwendung tieferliegende Probleme hat, ist unser Artikel über Anzeichen dafür, dass Ihre Laravel-Anwendung eine technische Überprüfung benötigt eine gute Ergänzung. Auf unserer Seite Laravel-Entwicklung wird außerdem erläutert, wie wir bei solchen Aufgaben vorgehen.

Schritt null: Messen, bevor Sie etwas ändern

Der häufigste Performance-Fehler besteht darin, das Falsche zu optimieren. Raten ist Zeitverschwendung und erhöht die Komplexität. Bevor Sie Codeänderungen vornehmen, finden Sie heraus, wo die Zeit tatsächlich verbraucht wird.

1. Finden Sie die langsamen Seiten und Abfragen

Nützliche Tools sind:

Beginnen Sie mit den Seiten, über die sich Benutzer tatsächlich beschweren oder die den meisten Traffic verzeichnen. Notieren Sie die Antwortzeit, die Anzahl der Abfragen und den verwendeten Speicher. Diese Werte bilden Ihre Basislinie, anhand derer Sie feststellen können, ob eine Änderung geholfen hat.

Oft ist das Ergebnis überraschend. Eine Seite, die aufgrund eines großen Bildes oder ressourcenintensiven JavaScripts langsam wirkt, profitiert nicht von einer Datenbankoptimierung, und eine Seite mit hunderten Abfragen wird durch einen schnelleren Server nicht verbessert.

Die Datenbank: Wo die meisten Probleme liegen

In typischen Geschäftsanwendungen ist die Datenbank die Hauptursache für Verzögerungen, meist aufgrund einiger weniger Muster.

2. Beheben Sie das N+1-Abfrageproblem

Dies ist das häufigste Performance-Problem in Laravel. Es tritt auf, wenn der Code eine Liste von Datensätzen lädt und dann für jeden Datensatz eine zusätzliche Abfrage ausführt, um zugehörige Daten abzurufen. Die Anzeige von 100 Bestellungen mit ihren Kunden kann unbemerkt zu 101 Abfragen führen.

Beheben Sie das Problem, indem Sie zugehörige Daten vorausschauend mit with() laden, sodass Laravel alle Daten mit wenigen statt Hunderten von Abfragen abruft. Sie können Laravel auch so konfigurieren, dass während der Entwicklung bei jedem Lazy Loading ein Fehler ausgegeben wird. Dadurch wird das Problem erkannt, bevor es die Benutzer erreicht.

3. Die richtigen Indizes hinzufügen

Ohne Index liest die Datenbank jede Zeile, um die angeforderten Daten zu finden. Bei kleinen Tabellen ist dies kaum spürbar, bei großen jedoch extrem langsam. Fügen Sie Indizes für Spalten hinzu, die Sie häufig filtern, sortieren oder verknüpfen, z. B. Fremdschlüssel, Statusfelder und Datumsangaben.

Verwenden Sie die Abfrageanalysetools der Datenbank, z. B. EXPLAIN, um zu überprüfen, ob eine Abfrage einen Index verwendet. Indizieren Sie nicht alles: Jeder Index verlangsamt Schreibvorgänge und belegt Speicherplatz. Fügen Sie Indizes daher nur dort hinzu, wo sie wirklich nötig sind.

4. Nur die benötigten Daten auswählen

Das Laden ganzer Datensätze mit allen Spalten, einschließlich großer Textfelder, wenn Sie nur Name und E-Mail-Adresse benötigen, verschwendet Speicher und Zeit. Wählen Sie stattdessen die benötigten Spalten aus. Bei großen Ergebnismengen sollten Daten in Blöcken verarbeitet oder Lazy Collections verwendet werden, damit die Anwendung nicht Hunderttausende Datensätze gleichzeitig in den Speicher lädt.

5. Paginierung und Limitierung

Laden Sie niemals eine unbegrenzte Liste. Verwenden Sie Paginierung für Listen, die Benutzern angezeigt werden, und Limitierungen für alle anderen Listen. Bei sehr großen Tabellen empfiehlt sich eine einfache Paginierung, die eine aufwendige Gesamtzählung vermeidet.

6. Datenbankoperationen ausführen

Sortieren, Filtern, Gruppieren und Summieren sind Aufgaben, die Datenbanken hervorragend erledigen. Diese Operationen in PHP nach dem Laden aller Datensätze durchzuführen, ist in der Regel deutlich langsamer. Verwenden Sie Abfragen, Aggregatfunktionen und gegebenenfalls Datenbankansichten oder Übersichtstabellen für umfangreiche Berichte.

Caching: Einmalige Berechnungen

7. Aufwändige Ergebnisse zwischenspeichern

Wenn eine Abfrage oder Berechnung aufwändig ist und sich das Ergebnis nicht bei jeder Anfrage ändert, z. B. eine Dashboard-Summe, eine Produktliste oder eine Konfigurationsabfrage, speichern Sie das Ergebnis kurzzeitig im Cache, anstatt es jedes Mal neu zu berechnen.

8. HTTP- und Seiten-Caching verwenden, wo sinnvoll

Öffentliche Seiten, die sich selten ändern, können auf dem Webserver oder einem Content Delivery Network (CDN) zwischengespeichert werden, sodass die meisten Besucher PHP gar nicht erst erreichen. Setzen Sie die korrekten Cache-Header für statische Ressourcen, damit Browser Dateien wiederverwenden, anstatt sie erneut herunterzuladen.

Lassen Sie Benutzer nicht warten

9. Lagern Sie langsame Aufgaben in Warteschlangen aus

Alles, was länger als einen Moment dauert und nicht abgeschlossen sein muss, bevor der Benutzer eine Antwort erhält, gehört in einen Hintergrundprozess: E-Mails und Benachrichtigungen versenden, PDFs und Berichte generieren, Bilder und Dateien verarbeiten, langsame Drittanbieterdienste aufrufen und mit anderen Systemen synchronisieren.

Das Warteschlangensystem von Laravel macht dies einfach. Der Benutzer erhält eine sofortige Antwort, und die Worker bearbeiten die Aufgabe im Hintergrund und versuchen es bei Fehlern erneut. Verwenden Sie Redis oder ein zuverlässiges Warteschlangen-Backend und überwachen Sie die Warteschlangen, damit Fehler nicht unbemerkt bleiben. Laravel Horizon bietet ein Dashboard für Redis-Warteschlangen.

10. Planen Sie rechenintensive Aufgaben außerhalb der Spitzenzeiten.

Berichte, Bereinigungen, Importe und Synchronisierungen können über den Laravel-Scheduler in ruhigen Zeiten ausgeführt werden, anstatt während der Stoßzeiten mit den Benutzern zu konkurrieren.

Das Framework und der Server

11. Nutzen Sie die integrierten Optimierungsbefehle von Laravel in der Produktion.

Laravel kann verschiedene Dinge zwischenspeichern, um den Aufwand pro Anfrage zu reduzieren.

Führen Sie diese Befehle im Rahmen Ihrer Bereitstellung aus. Denken Sie daran, die Abhängigkeiten zu löschen oder neu zu erstellen, wenn sich die Konfiguration ändert. Installieren Sie außerdem Produktionsabhängigkeiten mit einem optimierten Autoloader (composer install --optimize-autoloader --no-dev).

12. PHP und Server optimieren

Grundlegende Infrastruktureinstellungen machen einen großen Unterschied.

13. Frontend und Assets optimieren

Die Servergeschwindigkeit ist nur ein Teil dessen, was Benutzer empfinden.

Frontend-Optimierung ist oft der schnellste Weg, die gefühlte Geschwindigkeit einer Seite zu verbessern, und wirkt sich auch auf das Suchmaschinenranking aus.

14. Abhängigkeiten und Code schlank halten

Eine Kurzübersicht

SymptomWahrscheinliche UrsacheErste Lösung
Seite führt Hunderte von Abfragen ausN+1-ProblemEager Loading mit with()
Eine Abfrage dauert SekundenFehlender Index oder rechenintensive AbfrageEXPLAIN, Index hinzufügen, Abfrage umschreiben
Dashboard ist langsamAufwändige wiederholte BerechnungenErgebnisse zwischenspeichern oder Zusammenfassungstabellen verwenden
Formularabsendung hängtLangsame Verarbeitung in der AnfrageIn einen Warteschlangenjob verschieben
Jede Anfrage ist etwas langsamFramework-OverheadKonfigurations-, Routen- und Ansichtscache, OPcache
Speicherfehler bei großen ListenZu viele Daten gleichzeitig ladenChunking, Lazy Collections, Paginierung
Schneller Server, langsame SeiteLastreiches FrontendBilder komprimieren, Skripte reduzieren, CDN verwenden
Langsam bei LastspitzenZu wenige Worker, kein CachingCaching, mehr Worker, Octane in Betracht ziehen

Häufige Fehler

  1. Optimieren ohne Messung. Sie beheben möglicherweise das Falsche.
  2. Alles cachen. Veraltete oder inkonsistente Daten verursachen schwer auffindbare Fehler.
  3. Blindes Hinzufügen von Indizes, was Schreibvorgänge verlangsamt, ohne Lesevorgänge zu verbessern.
  4. Das N+1-Problem ignorieren, da es bei kleinen Testdaten unsichtbar ist.
  5. Nur mit winzigen Datensätzen testen. Leistungsprobleme treten erst bei realistischer Datenmenge auf.
  6. Produktionsumgebung im Debug-Modus oder mit Entwicklungseinstellungen betreiben.
  7. Dateicache und Synchronisierungswarteschlange im Produktivbetrieb nutzen.
  8. Performance als einmaliges Projekt und nicht als Gewohnheit betrachten.
  9. Frontend vernachlässigen.
  10. Hardware skalieren, bevor der Code optimiert wird. Ein größerer Server kaschiert ein Problem und verursacht höhere Kosten.

Performance und das Gesamtbild

Geschwindigkeit ist nicht nur eine technische Frage. Sie beeinflusst Konversion, Sichtbarkeit in Suchmaschinen, Hostingkosten und Mitarbeiterproduktivität. Außerdem steht sie in Zusammenhang mit Wartbarkeit: Sauberer, getesteter Code mit sinnvoller Struktur lässt sich leichter und sicherer optimieren. Das ist einer der Gründe, warum wir Investitionen in Qualität von Anfang an empfehlen, wie in Softwarewartungskosten beschrieben, und die Wahl der richtigen Technologie für die jeweilige Aufgabe, die wir in Laravel vs. Node.js erörtern.

Wenn Sie eine größere Anwendung planen, sollte die Performance von Beginn an Teil des Designs sein: Berücksichtigen Sie Datenvolumen, erwarteten Traffic und was zwischengespeichert oder in die Warteschlange gestellt werden kann. Unsere Kostenleitfäden für Webanwendungen und Kostenleitfaden für Laravel zeigen, wie sich Skalierung und Performance-Anforderungen auf das Budget auswirken.

Eine einfache Performance-Routine

  1. Setzen Sie ein Ziel fest, z. B. Seitenladezeiten unter zwei Sekunden für die meisten Benutzer.
  2. Messen Sie wichtige Seiten und notieren Sie den Ausgangswert.
  3. Beheben Sie zuerst das größte Problem, in der Regel ein Datenbankproblem.
  4. Führen Sie erneute Messungen durch, um die Verbesserung zu bestätigen.
  5. Fügen Sie Caching und Queues hinzu, um wiederholte oder langsame Operationen zu vermeiden.
  6. Wenden Sie Produktionsoptimierungen in Ihren Deployment-Prozess ein.
  7. Überwachen Sie die Performance kontinuierlich und überprüfen Sie sie nach jedem größeren Release.

Abschließende Gedanken

Die meisten Performance-Probleme von Laravel lassen sich auf wenige Ursachen zurückführen: zu viele Abfragen, fehlende Indizes, langsame Operationen während der Wartezeit des Benutzers und fehlende Produktionsoptimierungen. Messen und beheben Sie zuerst das Datenbankproblem, cachen und queuen Sie, was möglich ist, optimieren Sie Framework und Server und halten Sie das Frontend schlank. Kleine, gut gewählte Änderungen beschleunigen Anwendungen regelmäßig um ein Vielfaches, ohne dass eine Neuentwicklung nötig ist.

Wenn Ihre Anwendung langsam ist und Sie die Ursache nicht kennen, kontaktieren Sie uns. Wir können das überprüfen, die tatsächlichen Engpässe ermitteln und einen priorisierten Plan vorschlagen, oder, falls Sie regelmäßig zusätzliche Unterstützung benötigen, können Sie Laravel-Entwickler einstellen, die mit Ihrem Team zusammenarbeiten.

Haben Sie ein Projekt im Sinn?

Wenden Sie sich an RuhaniSoft.