Wie verbessere ich die Leistung meiner Drupal7-Site? [geschlossen]

10

Für jemanden, der neu in Drupal ist, sehe ich, dass es viele Ressourcen für Drupal Caching gibt, aber ich bin nicht sicher, welche davon ich verwenden soll.

Gokul NK
quelle
1
Wir können diskutieren, ob wir eine kanonische Frage dazu auf Meta wollen, aber ich denke immer noch, dass sie zu weit gefasst ist. Und Leistungsverbesserungen können sehr kontextsensitiv sein und nicht im luftleeren Raum durchgeführt werden.
mpdonadio

Antworten:

26

Dies sind Notizen aus meinen Erfahrungen und können von denen anderer abweichen. Ich verwende überwiegend LAMP Stack und habe dies in meinen Vorschlägen berücksichtigt.

Daumenregeln für das Caching, denen ich im Allgemeinen folge.

  1. Einmal mehrmal verarbeiten.
  2. Lebe wenn möglich mit veralteten Daten
  3. Löschen Sie Caches selten und halten Sie sie sehr spezifisch.
  4. Wenn möglich, nehmen Sie die Änderungen auf der untersten Ebene des Stapels vor. LAMP - DCCc: Linux, Apache, MySQL, PHP, Drupal Core, Contrib und benutzerdefiniertes Modul.

Verbessern Sie die Leistung einer Drupal-Site (in zunehmender Komplexität)

  1. Halten Sie den Kern, das Contrib-Modul und die Themen auf dem neuesten Stand. Ja, das ist wichtig.

  2. Installieren Sie APC auf Ihrem Server. (Auf Vorschlag von Letharion nach oben verschoben)

  3. Seiten- Caching: admin / config / development / performance Unterschied zwischen der minimalen Cache-Lebensdauer und dem Ablauf zwischengespeicherter Seiten

  4. Block-Caching https://drupal.org/project/blockcache_alter Caching-Optionen für alle Blöcke.
  5. Aggregierte Javascript- und CSS-Dateien - Front-End-Verbesserungen https://www.drupal.org/project/advagg
  6. Deaktivieren Sie nicht benötigte Module. Jedes Modul erhöht die Menge an Code, die zum Laden einer Seite verfügbar sein muss. Und es erhöht auch die Anzahl der Suchvorgänge. Verwenden Sie nach Möglichkeit ein generisches Modul anstelle mehrerer Module, die bestimmte Funktionen ausführen.
  7. Inhalt von Cache-Ansichten - Inhaltsbewusstes Caching für Ansichten https://www.drupal.org/project/views_content_cache
  8. DB-Protokollierung deaktivieren - Verwenden Sie https://drupal.org/project/syslog_ng
  9. Reduzieren Sie 404 Fehler - http://www.brokenlinkcheck.com/
  10. Schnelle 404-Antworten - https://drupal.org/project/fast_404 - Versuchen Sie es auf Serverebene.
  11. Clientseitige Validierungen - https://www.drupal.org/project/clientside_validation
  12. Bild komprimieren - https://www.drupal.org/project/imageapi_optimize
  13. Faules Laden von Bildern - Laden Sie keine unnötigen Bilder - https://www.drupal.org/project/lazyloader
  14. Verwenden Sie Sprite Sheets - https://www.drupal.org/project/spritesheets

  15. Stellen Sie den Wert für die minimale Cache-Lebensdauer auf eine höhere Zahl ein und verwenden Sie Cache-Löschmodule, um die Caches für bestimmte Seiten zu löschen. - Wenn ich einen Knoten bearbeite / aktualisiere, gehen alle Seiten-Caches für anonyme Benutzer verloren

  16. Verwenden Sie das Entwicklungsmodul, um Abfragen zu überwachen.
  17. Ansichten neu schreiben Abfragen / Ansichten vermeiden, wenn es ein Overkill ist.
  18. XHProf - https://www.drupal.org/project/XHProf
  19. FPM, HHVM.
  20. DB Profiling and Tuning - https://www.drupal.org/project/dbtuner
  21. Verwenden Sie Boost , booten Sie die DB nicht, wenn dies nicht erforderlich ist. https://drupal.org/project/boost Für die meisten kleinen bis mittleren Websites ist Boost gut genug und Sie benötigen möglicherweise keine Reverse Proxies oder ähnliches.
  22. Verwenden Sie CDNs - https://www.drupal.org/project/cdn Es ist einfach einzurichten.
  23. Wenn Ihre Cache-Tabellen sehr umfangreich sind, verwenden Sie Memcached. Wenn Sie memcached installieren und RAM dafür einrichten können, ist es nicht so komplex, wie es sich anhört.
  24. Etags - Konfigurieren Sie Etags richtig. https://developer.yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. Verwenden Sie Reverse Proxy Server - Lack (zumindest für Assets). Hilft sehr, wenn die meisten Ihrer Benutzer anonym sind.
  26. Komprimierte Übertragung - Aktivieren Sie die gzip-Komprimierung
  27. Am Leben bleiben - Verwenden Sie nach Möglichkeit dauerhafte Verbindungen.
  28. Progressive JPEGS -
  29. CACHING IN CODE - Eatons Blog ist großartig. http://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7
  30. Implementieren der Cache-Erwärmung - https://www.drupal.org/project/cache_warmer - Cache Erwärmen Sie die Seiten, bevor der Endbenutzer sie trifft.
  31. Die Master Slave DB-Konfiguration - https://www.drupal.org/project/autoslave erleichtert Ihnen das Einrichten einer Konfiguration .
  32. Datenbankcluster - /programming/1163216/database-cluster-and-load-balancing
  33. Load Balancers - http://en.wikipedia.org/wiki/Load_balancing_(computing)
  34. Verwenden Sie die heuristische Cache-Erwärmung - https://www.drupal.org/project/cache_graceful
  35. Authentifiziertes Benutzer-Caching - https://www.drupal.org/project/authcache
Gokul NK
quelle
2
Ausgezeichnete Antwort, aber eine Sache, die mir sehr auffällt, ist, dass Sie APC nicht an der Spitze haben. APC ist trivial einfach zu installieren, es gibt keine Nachteile und die Gewinne können sehr groß sein. Ich denke, es sollte nach oben gehen. (Vielleicht mit einem Kommentar, dass es nach PHP 5.5 nicht benötigt wird, da die Optimierung endlich integriert wurde)
Letharion
1
Vielleicht auch etwas über die einfachsten Gewinne für das Caching erwähnen? Wenn Ihre Website hauptsächlich statischen Inhalt erfordert (die Seiten sind für alle Benutzer gleich, daher keine Anmeldungen), bietet Varnish oder Boost die größten Vorteile.
Dominic Woodman
5

Die Datenbankschicht ist wichtig. Ich beschreibe einige Teile davon und die Grundlagen in dieser Präsentation http://goo.gl/30yi39

mikeytown2
quelle
Tolle Präsentation MikeyTown. Du bist der Performance-Profi :)
Gokul NK
3

Als Begleiter zu Gokuls Antwort würde ich mir überlegen, was Sie in Drupal zwischenspeichern möchten (nicht nach Komplexität geordnet):

Caching bedeutet, wiederholte Aktivitäten zu beschleunigen.

Die großen Wiederholungsaktionen einer Drupal-Website sind:

  • Eine Webseite aufrufen
  • Ausführen von PHP-Code zum Erstellen einer Webseite
  • PHP ruft Elemente aus der Datenbank auf

Zwischenspeichern einer gesamten Webseite

Die größten Vorteile beim Zwischenspeichern sind die Suche nach einer Möglichkeit, eine gesamte Webseite zwischenzuspeichern, ohne jemals den PHP-Code auszuführen oder die Datenbank aufzurufen.

Sie können dies mit Lack oder Boost tun . Wenn ein Benutzer eine Seite aufruft, gibt er eine Kopie der Seite zurück, ohne jemals eine Berechnung durchzuführen.

Dies funktioniert jedoch nicht, wenn Teile der Seite unterschiedlich sein müssen (dh Benutzer melden sich an und ihr Name wird oben angezeigt).

Damit dies funktioniert, müssen Sie sich Authcache ansehen.

PHP-Caching

Sie können PHP mit APC zwischenspeichern . Wenn Sie Version 5.5 oder höher haben, ist ein anderer Cache integriert.

Dies erfolgt serverseitig und bedeutet, dass Teile Ihres PHP-Codes gespeichert werden. Sie zwischenspeichern PHP für Drupal, interagieren aber technisch nicht mit Drupal.

Datenbank-Caching

Anrufe zum Abrufen von Informationen aus der Datenbank sind teuer.

Der häufigste Mechanismus zum Zwischenspeichern von Datenbanken ist Memcache .

Dadurch werden Datenbankobjekte im RAM zwischengespeichert. Anstatt ein Datenbankobjekt auf der Festplatte aufzurufen, ziehen Sie es einfach aus dem RAM, was viel schneller ist.

Dominic Woodman
quelle
1
Redis ist auch ein großartiger In-Memory-Cache-Speicher, der meiner Erfahrung nach zumindest mit Memcache vergleichbar ist (obwohl Memcache wahrscheinlich mit Clustering gewinnt)
Clive