Πώς να κάνετε το Drupal site σας πιο γρήγορο

Βελτιστοποίηση Drupal Optimization

Το Drupal όσων αφορά τον κώδικά του αποτελεί παράδειγμα προς μίμηση μιας και οι αυστηρές προδιαγραφές της κοινότητας έχουν επιτύχει να είναι σήμερα από τα πιο προσεγμένα και εξελιγμένα τεχνολογικά παραδείγματα. Το Drupal κάνει εκτενή χρήση της βάσης δεδομένων, είναι κρίσιμης σημασίας να υπάρχουν τεχνικές caching των ερωτημάτων, καθώς επίσης ένας MySQL server ικανός να επεξεργάζεται πολύ γρήγορα τα ερωτήματα-queries. Κάτι τέτοιο επιτυγχάνεται αφενός με την χρήση των προαναφερθέντων τεχνολογιών (που συμβάλλουν στην γρηγορότερη εκτέλεση της εφαρμογής - PHP) καθώς επίσης και μέσω MySQL tuning.Οι απαιτήσεις ξεκινούν από το ελάχιστο:

  • Apache (με mod_rewrite για τα SEO friendly URL) ή nginx
  • MySQL 5
  • PHP 5.2+1 (32MBmemory limit, execution time 30+ δευτερόλεπτα)

Drupal PHP optimization

php variables

Οι προτεινόμενες ρυθμίσεις για την PHP είναι:

session.cache_limiter = nocache
session.auto_start = 0

expose_php = off

Σχετικά με την μεταβλητή expose_php, προτείνεται η απενεργοποίησή του καθώς προβάλει σε κάθε request την έκδοση PHP που τρέχει ο server και θα μπορούσε να χρησιμοποιηθεί από κακόβουλους χρήστες που στοχεύουν κάποια συγκεκριμένη αδυναμία, συγκεκριμένης PHP έκδοσης.

allow_url_fopen = off

Προτείνεται η απενεργοποίησή του για λόγους ασφαλείας, καθώς αποτελεί κίνδυνο για remote file execution / code injection. Αντίθετα προτείνεται η χρήση των cURL functions.

magic_quotes_gpc = off
register_globals = off

Depreceted functions στην PHP 5.3 και προς αφαίρεση στην PHP έκδοση 5.4

display_errors = Off

Το Drupal αναλαμβάνει ούτως ή άλλως την διατήρηση ενός αρχείου καταγραφής (log file) για σφάλματα, και προτείνεται η απενεργοποίηση για να μην προβάλλονται τα errors στους επισκέπτες.

php caching

Ως γνωστόν η PHP είναι μια δυναμική γλώσσα και μπορεί να οδηγήσει σε αρκετό φόρτο στην CPU. Υπάρχουν πολλές λύσεις και τεχνικές opcode caching (που μετατρέπουν τα αρχεία PHP σε εκτελέσιμα αρχεία που τρέχουν απευθείας από την μνήμη RAM) το πιο διαδεδομένο και σταθερό είναι το APC.

Επίσης θα πρέπει να είναι ενεργοποιημένο το PDO extension για σύνδεση με τη βάση δεδομένων (επιπλέον κατά προτίμηση μέσω mysqli).

PHP memory

Όπως αναφέραμε (1) η ελάχιστη μνήμη που απαιτείται είναι 32MB. Στην περίπτωση που γίνεται χρήση του ImageAPI GD, προτείνεται memory limit 96MB. Επίσης έξτρα modules ανάλογα με την λειτουργικότητά τους μπορούν να αυξήσουν το απαιτούμενο όριο κατά πολύ. Συνήθως μέχρι 128MB είναι αρκετά, ενώ τιμές όπως 256MB χρησιμοποιούνται σε Drupal sites που κάνουν εκτενή χρήση κι επεξεργασία multimedia files.

MySQL optimization

Το Drupal υποστηρίζει tables τύπου MyISAM και InnoDB. Επιπλέον θέλει αρκετά connections διαθέσιμα και αυτό που θα πρέπει να προσέξει κανείς είναι ότι η μεταβλητή max_allowed_packet της MySQL θα πρέπει να είναι τουλάχιστον 16M.

Γενικά ισχύει όπως είχαμε αναφέρει και σε άλλο άρθρο το γνωστό MySQL optimization.

Πιο ειδικά, αξίζει να διαβάσετε το πολύ αναλυτικό άρθρο στο ίδιο Drupal (link στα αγγλικά) Drupal 7 ρυθμίσεις MySQL, όπου περιγράφονται με μεγάλη λεπτομέρεια τόσο οι παράμετροι-ρυθμίσεις της MySQL όσο και οι συγκεκριμένες ανάγκες του Drupal.