2009-02-21 18 views
15

Ich arbeite an einer Drupal-basierten Website und stelle fest, dass es viele separate CSS- und JS-Dateien gibt. Während ich etwas vom Code durchschaue, kann ich auch einige Fälle sehen, in denen auch viele Abfragen verwendet werden.Scaling Drupal

Mit welchen Techniken haben Sie versucht, die Leistung von Drupal zu verbessern, und welche Module (falls vorhanden) verwenden Sie, um die Leistung von Drupal 'out of the box' zu verbessern?

Antwort

21

Wenn Sie die Seite admin/settings/performance aufrufen, die CSS- und JS-Aggregation aktivieren und das Seiten-Caching mit einer Mindestlebensdauer von 1 Minute durchführen, erhalten Sie sofort eine starke Website. Wenn Sie Ihren eigenen Code schreiben und irgendwelche Fragen beantworten, sollten Sie Ihre eigene Diskrete caching for expensive functions schreiben. Der verlinkte Artikel behandelt Drupal 5, nicht 6, aber die einzige Änderung in d6 ist die Eliminierung der Serialisierungsanforderung und der Funktionssignatur für die Funktionen cache_set() und cache_get(). (Beide in Kommentaren zu dem Artikel notiert)

Auf großen Websites auch in Betracht ziehen, einen Memcached-Server in das Netzwerk zu löschen: Mit dem Modul memcached können Sie die Drupal-Datenbank für zwischengespeicherte Daten vollständig umgehen. Wenn Sie große Mengen an Inhalten haben und die Suche ein Hotspot ist, können Sie auch lucene/solr als Suchindexer anstelle von drupals integriertem Suchindexer verwenden. Es ist gut für einen integrierten Indexer, aber es ist nicht für schwere Lasten (Hunderte oder Tausende von neuen Inhalten pro Stunde, sagen wir, mit schweren Facettensuche) konzipiert. Das apache solr Modul kann damit verbinden.

Wenn Sie Ansichten häufig verwenden, müssen Sie sicherstellen, dass Sie die Abfragen überprüft haben, die für nicht indizierte Felder generiert werden. Insbesondere das Sortieren und Filtern nach CCK-Feldern kann langsam sein, da CCK nicht automatisch Indizes hinzufügt, die über die Primärschlüssel hinausgehen. Zeigen Sie in D6 die Ansicht im Admin-Bildschirm an, kopieren Sie den Text der Abfrage und führen Sie ihn durch EXPLAIN in mysql oder den von Ihnen verwendeten Abfrageanalyse-Tools aus.

Tools wie YSlow und Firebug können Ihnen auch dabei helfen, langsame Daten wie riesige Imagedateien, JS auf entfernten Servern usw. zu erkennen.

+1

Ich würde auch ein wenig darüber, wie Block Caching einrichten - was ermöglicht Ihnen, Inhalte auch für registrierte Benutzer, wie Zwischenspeicherung der Seite nur die anonymen Einlagerungen ermöglicht. –

5

Drupal 6, out-of-the-box, bietet css und Javascript Aggregation --- die meisten css und js Dateien werden in einer einzigen Datei (und somit eine einzelne HTTP-Anfrage) kombiniert, und sind auch Leerzeichen gekürzt (um den Bandbreitenverbrauch zu reduzieren). Sie können dies unter/admin/settings/performance aktivieren.

Auch auf diesem Bildschirm sind Kontrollen für Drupal (sehr effektiv) Cache, die hilft, die Anzahl der Datenbankabfragen zu reduzieren.

Darüber hinaus, da Drupal (und alle Module, die Sie wahrscheinlich installiert haben) eine Tonne PHP-Quelle hat, hilft die Verwendung eines PHP-Opcode-Caches wie APC die Anfragezeit erheblich zu verringern.

0

Ich bin stark zweite Benedikt Empfehlung des Boost-Modul - es allein wird Ihre Website fliegen auf Shared-Hosting, wenn richtig konfiguriert, und ist nicht wirklich Buggy überhaupt.

Aktivieren Sie die CSS/JS-Aggregation, aktivieren Sie Boost, und Ihre Site kann sehr gut für anonyme Benutzer funktionieren.

Wenn Ihre Website hauptsächlich mit eingeloggten Benutzern arbeitet, müssen Sie viel mehr arbeiten, um sicherzustellen, dass Sitzungen gut zwischengespeichert werden, und wahrscheinlich die Verwendung von Memcached und mehr SQL Query Caching in Betracht ziehen.

Die größten Leistungszuwächse kommen immer vom Caching - aber das Überwachen und Anpassen Ihrer langsamen Abfragen, das Überwachen und Anpassen von Apache- und PHP-Konfigurationen und das Kluge über die Module, die Sie verwenden, sind ebenfalls sehr wichtig.

+0

Ich arbeite an einem Drupal Performance Whitepaper auf meiner Website - und biete dies als eine gute Ideenwand zur Verbesserung der Seitenleistung auf der ganzen Linie an: http://www.lifeisaprayer.com/articles/web-design/2010/drupal-performance-white-paper – geerlingguy

0

Anders als die Drupal Standard-Cache, gibt es einige andere Methode, um die Leistung zu erhöhen

Boost-Modul eines der besten ist. Memcache, Varnish (Drupal 7/Pressflow), CDN sind die anderen Methoden, die die Leistung verbessern können

0

Es ist auch erwähnenswert, die Leistungssteigerung durch die Verwendung von qualitativ hochwertigen SSD-Speicher. Es hat meine anfänglichen Antwortzeiten bei der Migration auf SSD konsistent um 30% oder mehr reduziert (ich ging von etwa ~ 450 ms auf ~ 250 ms bei meinem letzten Projekt mit identischen Apache/Memcache/Cloudfront EC2-Konfigurationen), um nicht zu sagen, viel schöner Es geht darum, einen flinken Server zu verwalten, bei dem jeder Befehl oder jedes Skript, das Sie darauf werfen, fast augenblicklich ist. Ich werde nie wieder gehen.