Drupal 7 mit Boost

Ansprechpartner

jackhammer

1. Problembeschreibung

Trotz Memcache ist nach jedem Server Restart oder dem zeitlichen Auslaufen des Caches der Seitenaufbau sehr langsam. Das Problem wurde im Memcached-Artikel beschrieben Um jetzt sicherzustellen daß anonyme Besucher immer eine gecachte Seite zu sehen bekommen, brauchen wir ein weiteres Cache-Modul das diese bedient.

Zum Verständnis: Ein CMS hat normalerweise keine fertigen HTML-Seiten, sonder nur "Bauvorschriften" gespeichert. Wird nun eine Seite abgerufen baut das CMS die Seite intern auf, und übergibt das fertige Ergebnis an den Apache in Form einer http-Seite. Das ist recht aufwendig und benötigt mitunter einen Menge Schreib/Lese - Operationen auf der Datenbank.

Boost setzt hier an indem es den internen Caching-Mechanismus von Drupal ersetzt. Wie auch der interne Caching Mechanismus wird jede Seite die nicht verändert wurde bei der ersten Auslieferung von Boost in den Cache kopiert. Da nach jeder Modifikation einer Seite dies danach auch aufgebaut wird, landen somit auch alle veränderten bzw. neu aufgebauten Seiten sofort im Cache.

Da der Cache nach einer gewissen Zeit "abläuft" kann man optional noch das Modul "Boost Crawler" einsetzten,das periodisch abgelaufene Cache-Einträge durch "frisch" erzeugte ersetzt.

Damit haben alle anonymen Besucher immer alle Seiten statisch ! (Und damit immer blitzschnell).

Ausnahme scheint der Kalender zu sein, der wird wohl immer dynamisch erzeugt - hier versucht dann Memcached sein Bestes.

2. Lösung

Einsatz von Boost.

2.1. Schritt 1: Drupal Konfiguration anpassen

2.2. Schritt 2: In Drupal das Modul Boost installieren

Das Modul gibt es hier: http://ftp.drupal.org/files/projects/boost-7.x-1.0.tar.gz

Das Modul erzeugt ein neues Unterverzeichnis /var/www/drupal/cached. Die Rechte (www-data:www-data) passen so weit.

2.3. Schritt 3: Zusatz zu der .htaccess - Datei erzeugen

Boost bringt einen Generator mit mit dem man die Anpassungen an die /var/www/drupal/.htaccess erstellen kann

Module -> Performance & Scalability -> Boost -> Konfigurieren -> .htaccess -> .htaccess Generation

erzeugt die nötigen Anweisungen die dann per Copy & Paste in die /var/www/drupal/.htaccess kopiert werden,

Hier ein Beispiel:

### BOOST START ###

  # Allow for alt paths to be set via htaccess rules; allows for cached variants (future mobile support)
  RewriteRule .* - [E=boostpath:normal]

  # Caching for anonymous users
  # Skip boost IF not get request OR uri has wrong dir OR cookie is set OR request came from this server OR https request
  RewriteCond %{REQUEST_METHOD} !^(GET|HEAD)$ [OR]
  RewriteCond %{REQUEST_URI} (^/(admin|cache|misc|modules|sites|system|openid|themes|node/add|comment/reply))|(/(edit|user|user/(login|password|register))$) [OR]
  RewriteCond %{HTTPS} on [OR]
  RewriteCond %{HTTP_COOKIE} DRUPAL_UID [OR]
  RewriteCond %{ENV:REDIRECT_STATUS} 200
  RewriteRule .* - [S=3]

  # GZIP
  RewriteCond %{HTTP:Accept-encoding} !gzip
  RewriteRule .* - [S=1]
  RewriteCond %{DOCUMENT_ROOT}/cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html\.gz -s
  RewriteRule .* cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html\.gz [L,T=text/html,E=no-gzip:1]

  # NORMAL
  RewriteCond %{DOCUMENT_ROOT}/cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html -s
  RewriteRule .* cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html [L,T=text/html]

  ### BOOST END ###

3. Modul Cache Expiration

In diesem Modul muss für die Verwendung von Boost angepasst werden. Man finder es unter Startseite » Verwaltung » Konfiguration » System » Cache Expiration

Feld

Wert

Status of implementation

External expiration

Include base URL in expires

deaktiviert

Links:


CategoryDocumentation

Dokumentation/Drupal/Drupal 7 mit Boost (last edited 2016-03-04 09:16:07 by jackhammer)