Heim  >  Artikel  >  PHP-Framework  >  Wie optimiert man die Leistung in Laravel8? Teilen von Optimierungstipps

Wie optimiert man die Leistung in Laravel8? Teilen von Optimierungstipps

青灯夜游
青灯夜游nach vorne
2022-10-08 18:23:431895Durchsuche

Wie optimiert man die Leistung in Laravel8? Teilen von Optimierungstipps

Dieser Leitfaden listet verschiedene Tipps zur Leistungsoptimierung auf, von schnellen Optimierungen bis hin zu detaillierten Optimierungen, die beim Erstellen leistungsstarker Laravel-Anwendungen helfen können.

Es gibt viele Studenten auf Enlightn, die uns beim Verfassen dieses Leitfadens geholfen haben. Wenn Sie nach Automatisierungsleistungs- oder Sicherheitstools für Laravel suchen, sollten Sie diese Website besuchen.

Warum die Leistung verbessern?

Es besteht kein Zweifel daran, dass Benutzer schnellere Apps bevorzugen als langsam ladende Apps.

Laut einer Studie von Google werden 53 % der Nutzer mobiler Geräte verlieren (sie verlassen), wenn das Laden einer Website länger als 3 Sekunden dauert. Und die durchschnittliche Ladezeit einer mobilen Website beträgt etwa 15 Sekunden. Darum zählt Leistung!

Je zusätzliche Sekunde Ihre App zum Laden benötigt, desto niedriger ist Ihre Kundenkonversionsrate. Glücklicherweise ist dies für Laravel-Anwendungen kein schwer zu lösendes Problem.

1. Nutzen Sie die integrierten Leistungsfunktionen, um schnell zu gewinnen.

Laravel verfügt über einige integrierte Leistungsverbesserungsfunktionen, die mit einer einfachen Konfiguration verwendet werden können.

Die wichtigste Leistungsverbesserung ist der Routen-Cache. Wussten Sie, dass jedes Mal, wenn Ihre Laravel-Anwendung gestartet wird, die Middleware bestimmt, Aliase aufgelöst, Routengruppen aufgelöst, Route-Controller-Aktionen angegeben und Anforderungsparameter verarbeitet werden?

Sie können den Artisan-Befehl route:cache verwenden, um alle erforderlichen Routing-Informationen zwischenzuspeichern und die Routing-Verarbeitung zu überspringen: route:cache 来缓存所有必需的路由信息,从而跳过路由处理:

php artisan route:cache

这条命令可以给你带来 5 倍的性能提升!是最简单也是最有效的优化。

除了路由缓存,Laravel 还提供以下内容:

  • 配置缓存 在每次应用启动时跳过 .envconfig 文件的解析。
  • 视图缓存 预编译你的 Blade 模板视图。
  • 事件缓存 缓存应用程序所有事件和监听器清单。

提示:你应该确保将上述缓存命令添加到部署脚本中,以便每次部署时都重新缓存。否则,路由或配置文件的任何更改都不会在应用中体现。

2. 优化 Composer

Laravel 开发者常犯的一个错误是在生产模式下安装所有依赖项。一些开发包(例如 Ignition)会在内存中记录查询、日志和转储,从而提供带有上下文的友好错误消息,简化调试过程。尽管这在开发中很有用,但会减慢生产环境中应用程序的速度。

在部署脚本中,使用 Composer 安装拓展包的同时请务必使用 -no-dev 选项:

composer install --prefer-dist --no-dev -o

此外,请确保如上所述在生产环境中使用 -o 选项。这可以让 Composer 可以通过生成「classmap」来优化自动加载器。

如果你的应用在运行时没有生成类,你可以选择使用 --classmap-authoritative 选项而不是 -orrreeeDieser Befehl kann Ihnen eine 5-fache Leistungssteigerung bescheren! Es ist die einfachste und effektivste Optimierung.

Zusätzlich zum Routen-Caching bietet Laravel auch Folgendes:

Tipp: Sie sollten sicherstellen, dass Sie den oben genannten Cache-Befehl zu Ihrem Bereitstellungsskript hinzufügen, damit er bei jeder Bereitstellung erneut zwischengespeichert wird. Andernfalls werden Änderungen an Routing- oder Konfigurationsdateien nicht in der App übernommen.

2. Composer optimieren

Ein häufiger Fehler, den Laravel-Entwickler machen, besteht darin, alle Abhängigkeiten im Produktionsmodus zu installieren. Einige Entwicklungspakete, wie z. B. Ignition, zeichnen Abfragen, Protokolle und Dumps im Speicher auf, stellen benutzerfreundliche Fehlermeldungen mit Kontext bereit und vereinfachen das Debuggen. Während dies in der Entwicklung nützlich ist, kann es Ihre Anwendung in der Produktion verlangsamen.

Wenn Sie im Bereitstellungsskript Composer zum Installieren des Erweiterungspakets verwenden, achten Sie darauf, die Option -no-dev zu verwenden: rrreeeStellen Sie außerdem sicher, dass Sie -o verwenden in der Produktionsumgebung wie oben erwähnt Option. Dadurch kann Composer den Autoloader durch die Generierung von „Classmaps“ optimieren. Wenn Ihre Anwendung zur Laufzeit keine Klassen generiert, können Sie zur weiteren Optimierung die Option --classmap-authoritative anstelle der Option -o verwenden. Schauen Sie sich unbedingt die Composer-Dokumentation

Optimierungsstrategien

an.

🎜🎜3 Wählen Sie die richtigen Treiber🎜🎜🎜Die Auswahl der richtigen Cache-, Warteschlangen- und Sitzungstreiber hat einen großen Einfluss auf die Anwendungsleistung. 🎜🎜Für das Caching in Produktionsumgebungen werden In-Memory-Cache-Treiber wie Redis, Memcached oder DynamoDB empfohlen. Für ein Einzelserver-Setup könnten Sie erwägen, lokales Dateisystem-Caching zu verwenden, obwohl dies langsamer ist als die Cache-to-Memory-Option. 🎜🎜Für Warteschlangen wird empfohlen, Redis-, SQS- oder Beanstalkd-Treiber zu verwenden. Der Datenbankwarteschlangentreiber ist nicht für Produktionsumgebungen geeignet und weist bekanntermaßen Deadlock-Probleme auf. 🎜🎜Für Sitzungen werden Datenbank-, Redis-, Memcached- oder DynamoDB-Treiber empfohlen. Der Cookie-Treiber unterliegt Dateigrößen- und Sicherheitsbeschränkungen und wird für Produktionsumgebungen nicht empfohlen. 🎜🎜🎜🎜🎜4. Verarbeiten Sie zeitaufwändige Aufgaben über die Warteschlange🎜🎜🎜Während einer typischen Webanfrage kann es sein, dass einige bestimmte Aufgaben lange dauern. Laravel verfügt über ein erstklassiges 🎜Warteschlangensystem🎜, das es uns ermöglicht, zeitaufwändige Aufgaben in Aufgaben in der Warteschlange zu verschieben, sodass Ihre Anwendung extrem schnell auf Anfragen reagieren kann. 🎜

Zu den häufigsten Beispielen für solche Aufgaben gehören im Allgemeinen das Parsen und Speichern von CSV-Dateien, die Interaktion mit APIs von Drittanbietern, das Senden von Benachrichtigungen an Benutzer, lange und zeitaufwändige Datenbankabfragen und Suchindexaktualisierungen.

5. Festlegen von HTTP-Komprimierungsheadern für Textdateien

Komprimierungsheader können einen erheblichen Einfluss auf die Anwendungsleistung haben. Stellen Sie sicher, dass Sie auf Ihrem Webserver die Komprimierung oder CDN für Textformatdateien wie CSS, JS, XML oder JSON aktivieren.

In Bildformaten sind bereits Komprimierungsalgorithmen implementiert und in den meisten Fällen wurden Bildformatdateien komprimiert, und Bilder sind keine Dateien im Textformat (mit Ausnahme des SVG-Formats, bei dem es sich um ein XML-Dokument handelt). Daher erfordert das Bildformat keine Komprimierung.

Sie können gzip oder brotli (ältere Browser unterstützen Brotli möglicherweise nicht) auf Ihrem Webserver oder CDN einrichten, um eine große Leistungssteigerung zu erzielen.

Normalerweise kann die Dateigröße durch Komprimierung um etwa 80 % reduziert werden!

6. Legen Sie HTTP-Cache-Header für statische Ressourcen fest.

Caching kann die Leistung Ihrer Anwendung verbessern, insbesondere für statische Ressourcen wie Bilder, CSS und JS-Dateien. Es wird empfohlen, Cache-Steuerungsheader gegebenenfalls auf Webserver- oder CDN-Ebene zu aktivieren. Wenn Sie diese Steuerheader in der Larvel-Anwendung statt auf dem Webserver festlegen möchten, können Sie die „Cache Control Middleware“ von Larvel verwenden. Das Cache-Header-Feld stellt sicher, dass der Browser bei mehrmaligem Besuch der Website nicht wiederholt statische Ressourcen anfordert. Dies verbessert das Benutzererlebnis, da die Website bei nachfolgenden Besuchen schneller geladen wird.

Laravel Mix bietet standardmäßig die Funktion „Cache-Reinigung“, sodass der Browser bei einer Änderung des CSS- oder JS-Codes nicht weiterhin alte zwischengespeicherte Inhalte verwendet.

7. Beschleunigen Sie statische Ressourcen mithilfe von CDN-Diensten.

Ein Content Delivery Network (CDN) ist eine geografisch verteilte Servergruppe, die Dienste mithilfe von Servern bereitstellt, die näher an Website-Besuchern liegen. Dadurch können Benutzer schnellere Ladezeiten erleben. Neben schnelleren Ladegeschwindigkeiten und kürzeren Ladezeiten bietet CDN auch weitere Vorteile, wie z. B. Reduzierung der Webserverlast, DDOS-Schutz und Analyse statischer Ressourcendienste usw.

Einige beliebte CDNs sind CloudFlare, AWS CloudFront und Azure CDN. Die meisten CDNs haben ein bestimmtes Limit für kostenlose Testversionen. Bitte erwägen Sie die Verwendung eines CDN, um die Ladeleistung statischer Ressourcen zu verbessern.

Laravel bietet eine sofort einsatzbereite CDN-Unterstützungskomponente

Mix

und Hilfsfunktionen

Asset

im Framework.

8. JS- und CSS-Code minimieren

Durch das Minimieren von Skripten wird zusätzlicher Code aus Ihrer Anwendung entfernt, der für die Ausführung nicht erforderlich ist (z. B. Codekommentare, Leerzeichen, verkürzte Variablennamen und andere Optimierungen). Dies ist eine gängige und effektive Methode, um die Größe von JS- und CSS-Dateien in Produktionsumgebungen zu reduzieren. Laravel Mix bietet sofort einsatzbereite

Minimierung der Ausgabe

-Funktionalität für Ihre Produktionsskripte

9. Verwenden Sie den Cache mit Bedacht

Laravel verfügt über integrierte Caching-Unterstützung. Caching eignet sich am besten für leseintensive Arbeitslasten. Diese Arbeitslasten beinhalten oft zeitaufwändige Datenabruf- oder Datenverarbeitungsaufgaben.

Einige häufige Szenarien für das Zwischenspeichern können sein:

Das Zwischenspeichern statischer Seiten ist ein Kinderspiel. Die offizielle Website von Laravel verwendet

Seiten-Cache

, um jede Dokumentseite zwischenzuspeichern.
  • Fragment- oder Teil-Caching: Manchmal kann es sinnvoller sein, ein Fragment einer Seite zwischenzuspeichern, als die gesamte Seite zwischenzuspeichern. Beispielsweise möchten Sie möglicherweise einen Seitenkopf zwischenspeichern, der den Benutzernamen und den Benutzeravatar enthält. Sie können das Seitenkopffragment einmal zwischenspeichern, ohne jedes Mal die Daten aus der Datenbank abrufen zu müssen.
  • Abfrage-Cache
  • : Der Abfrage-Cache kann nützlich sein, wenn Ihre Anwendung die Datenbank häufig nach Elementen abfragt, die sich selten ändern. Wenn Sie beispielsweise eine E-Commerce-Website betreiben, möchten Sie möglicherweise die auf der Startseite des Einkaufszentrums angezeigten Artikelkategorien zwischenspeichern, anstatt diese Artikelkategorien bei jedem Besuch des Einkaufszentrums aus der Datenbank zu lesen.
  • Bitte denken Sie daran, dass Caching für
  • (Artikel, die selten angefordert werden) keinen Nutzen hat. Im Gegenteil, es sollte bei häufigem Datenabruf (im Vergleich zu Datenaktualisierungen) mit Vorsicht verwendet werden.

    Stellen Sie außerdem sicher, dass Sie den Cache jedes Mal ungültig machen oder leeren, wenn sich der zwischengespeicherte Inhalt ändert. Wenn Sie beispielsweise Profilkopfzeilen zwischenspeichern, aktualisieren Sie den Cache, nachdem ein Benutzer sein Profilbild aktualisiert hat.

    10. Identifizieren Sie Leistungsengpässe in Ihrer Anwendung

    Wenn das Laden einiger Ihrer Seiten lange dauert oder eine hohe Speicherauslastung vorliegt, müssen Sie möglicherweise Leistungsengpässe identifizieren. Im Laravel-Ökosystem gibt es viele Tools, die Ihnen dabei helfen, darunter Laravel Telescope, Laravel Debugbar und Clockwork.

    Einige häufige Leistungsengpässe sind:

    • N+1 Abfragen: Wenn Ihr Code eine Abfrage für jeden Datensatz durchführt, führt dies zu mehr Netzwerk-Roundtrips und mehr Abfragen. Dies funktioniert in Laravel mithilfe von Data Preloading.
    • Duplicate Requests: Wenn Ihr Code dieselbe Abfrage mehrmals ausführt, während er dieselbe Anforderung verarbeitet, kann dies Ihre Anwendung verlangsamen. Wenn mehrere Dienste oder Klassen denselben Datensatz benötigen, können diese Probleme normalerweise gelöst werden, indem Datenberechnungen oder -abrufe in separate Klassen extrahiert werden.
    • Hohe Speichernutzung: Um die Speichernutzung Ihrer Anwendung zu reduzieren, können Sie die Verwendung von „Lazy Collections“ und „Query Chunking“ in Betracht ziehen, um das in einem einzigen Vorgang verarbeitete Datenvolumen zu reduzieren. Verwenden Sie zum Speichern von Dateien Automatisches Streaming, um den Speicherverbrauch zu reduzieren. Langsame Abfragen: Wenn die Ausführung einer Abfrage zu lange dauert, sollten Sie den Abfrage-Cache und/oder die
    • EXPLAIN
    • -Anweisung verwenden, um den Abfrageausführungsplan zu optimieren. Wenn Sie mit den oben genannten Debugging-Tools keine Leistungsengpässe in Ihrer Anwendung identifizieren können, können Sie die Verwendung von Analysetools wie XDebug oder Blackfire in Betracht ziehen.

    Online-Checkliste

    Darüber hinaus finden Sie hier eine vollständige Online-Checkliste als Referenz 41 „Einführung in die LX3-Laravel-Leistungsoptimierung“.

    Zusammenfassung

    Leistungsoptimierung ist ein ewiges Thema, aber Laravel verfügt über mehrere integrierte Komponenten wie Mix, Warteschlangen und Cache, die die Leistungsoptimierung einfach aussehen lassen! Wir hoffen, dass Sie etwas Neues über die Verbesserung der Anwendungsleistung gelernt haben. Originaladresse: https://laravel-news.com/performance-checklist

    Übersetzungsadresse: https://learnku.com/laravel/t/55702

    [Verwandte Empfehlungen:

    Laravel-Video-Tutorial

    ]

Das obige ist der detaillierte Inhalt vonWie optimiert man die Leistung in Laravel8? Teilen von Optimierungstipps. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen