Wird die Site durch mehr aktivierte Module langsamer?


13

Wird die Site durch mehr aktivierte Module langsamer?
Ich habe 30 Module für meine Site installiert und befürchte, dass es zu langsam wird.

Antworten:


11

Wenn mehr Module aktiviert sind, wird das Drupal-Bootstrapping langsamer, da mehr Dateien geladen und analysiert werden. Abgesehen davon bedeutet mehr aktivierte Module nicht automatisch eine langsamere Site, da nicht alle Module Code für jede angeforderte Seite ausführen.

Wenn Sie beispielsweise Views installiert und nur die Ansicht der Startseite aktiviert haben, werden Views nicht ausgeführt, wenn die angeforderte Seite eine Knotenseite ist. Das Modul "Ansichten" wird zwar implementiert hook_menu_alter(), und dies wird auch dann ausgeführt, wenn Sie keine Ansicht aktiviert haben, das Modul "Ansichten" jedoch aktiviert ist. Eine Implementierung von hook_menu_alter()wird aufgerufen, wenn die Menüs neu erstellt werden, und dies geschieht normalerweise nicht bei jeder Seitenanforderung.


6
Viele Module, die "nichts" bewirken, machen die Site etwas langsamer. Es hat mit der Funktionsweise des Hakensystems zu tun; Drupal ruft jedes Mal, wenn ein Hook ausgeführt wird, ein module_hook für jedes installierte Modul auf. All diese Prüfungen können sich summieren. Auf unserer Site wird module_hook 13.000 Mal aufgerufen, und das hat 168 ms gedauert. jedes bisschen summiert sich.
mikeytown2

15

Ja. 30 ist jedoch kein Grund zur Sorge. Sie sind in Schwierigkeiten, wenn Sie über 100 gehen;)

Installieren Sie einen Bytecode-Cache (APC oder XCache), um die Verlangsamung des Einbindens vieler Dateien weitgehend zu vermeiden, und entfernen Sie regelmäßig nicht verwendete Module (normalerweise sammelt jedes Projekt Module, die zu einem bestimmten Zeitpunkt während der Entwicklung nicht verwendet werden).


Ich sehe, dass Commerce Kickstart 96 Contrib-Module verwendet.
Pere

Durch die Installation von XCache wurden meine Seiten in der Hälfte der Zeit gerendert. Vielen Dank.
Cherouvim

1

In Ergänzung zu den beiden richtigen Antworten von @Bojan Zivanovic & @kiamlaluno sollten Sie sich um Modulinteraktionen kümmern. Viele Module erhöhen das Risiko schlechter Modulwechselwirkungen (z. B. Wechselwirkungen mit anderen Medikamenten). Ich würde sagen, dass mehr als 50 Module gefährlich werden und dass Sie frühzeitig prüfen sollten, ob Sie nicht mehrere Module für die gleichen Aufgabendomänen verwenden.

Als Beispiel Seiten mit Blöcken, Ansichten, Feldern, Feldern mit Ansichten, Blöcken mit Ansichten, Blöcken mit Feldern mit Ansichten ... erstellen. Die Idee ist, etwas zu erhalten, das ein normales Gehirn verstehen kann (wie sind meine verschiedenen Seiten zusammengesetzt). . Dies kann große Auswirkungen auf die Leistung haben, wenn mehrere komplexe Ladeverhalten ausgeblendet und verkettet werden. Ein weiteres Beispiel ist das Hinzufügen mehrerer ACL-Regeln aus mehreren Modulen für jeden Inhalt.

Wenn Sie Leistungsangst haben, verwenden Sie immer Profiling- Module und verfolgen Sie die Unterschiede nach jeder neuen Modul-Hinzufügung. Manchmal spart ein kleiner Haken mit SQL oder einer benutzerdefinierten Vorlage Ihrer Website Zeit.


Ist Drupal für "normales Gehirn" gemacht? :)
pico34

1

Drei Dinge, die Sie beim Erstellen einer Site beachten sollten, um Ihre Drupal-Site zu beschleunigen:

  1. Reduzieren Sie die Anzahl der Module
  2. Überprüfen Sie Ihr mySQL-Abfrageprotokoll auf langsame Abfragen und passen Sie den Code an bzw. fügen Sie Indizes hinzu, falls erforderlich.
  3. Zwischenspeichern (und hoffen, dass die meisten Benutzer nicht authentifiziert sind)

und in Bezug auf den Modulteil wird offensichtlich eine größere Anzahl von Modulen langsamer die Geschwindigkeit sein, da sie einen größeren RAM zum Verarbeiten benötigten.

30 bis 60 Module beeinträchtigen Ihre Site nicht so sehr.

Das Verhältnis für die Ladezeit und die Anzahl der Module beträgt 100. Das Modul verzögert die Site um 350 ms bis 650 ms.

Ich hoffe, dass Sie bei der nächsten Site diese Punkte berücksichtigen werden. :)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.