Speed Optimierung für WordPress – Part 3: Memcache-Lösung (Google Pagespeed Modul)
Vielleicht etwas grundsätzliches vorab: man mag zu Google und den dort eingesetzten Praktiken stehen wie man möchte, insbesondere auch das Thema Datenschutz in den USA sollte man -nicht erst seit Snowden- kritisch betrachten. Aber Hand aufs Herz: die Durchdringung von Google im Internet ist aktuell so vielschichtig, dass man sich als Betreiber von Blogs und Webseiten der Institution „Google“ nur sehr schwer entziehen kann.
Auf das Pagespeed Modul bin ich über über die Google Pagespeed Seite aufmerksam geworden.
Die Entwickler von Google haben die Installation, die grundsätzliche Einrichtung, als auch jeden einzelnen der vielen Filter „en detail“ dokumentiert; Daumen hoch dafür.
Das Pagespeeg Modul arbeitet nach (Googles eigenen ?) sogenannten „web performance best practices“:
- Optimizing caching — keeping your application’s data and logic off the network altogether
- Minimizing round-trip times — reducing the number of serial request-response cycles
- Minimizing request overhead — reducing upload size
- Minimizing payload size — reducing the size of responses, downloads, and cached pages
- Optimizing browser rendering — improving the browser’s layout of a page
- Optimizing for mobileNew! — tuning a site for the characteristics of mobile networks and mobile devices
(Quelle: https://developers.google.com/speed/docs/best-practices/rules_intro)
Wie installiere und konfiguriert man das mod_pagespeed Modul ?
Das Modul an sich kann an dieser Stelle für DEB und RPM basierte Linux Systeme heruntergeladen, und „as usual“ installiert werden.
In meinem Falle findet sich das Ergebnis der Installation unter /etc/apache/mods-available, bzw. als Symlink unter /etc/apache/mods-enabled.
Das mod_pagespeed Mudul kann nun global für den Apache in der /etc/apache2/mods-enabled/pagespeed.conf, als auch in vorhandenen VHost’s konfiguriert werden.
Ich habe mich dafür entschieden, die Core Filter, als auch einige andere, für meine WordPress Installationen, unkritische Filter in der globalen pagespeed.conf Datei einzustellen, und kritischere Filter in den jeweiligen VHosts Dateien ein oder auszuschalten.
Gleich zu Beginn des Konfigurationsfiles kann mod_pagespeed ein und ausgeschaltet werden, was danach selbstverständlich eines „graceful Restarts“ des Apache Webservers bedarf.
# Turn on mod_pagespeed. To completely disable mod_pagespeed, you
# can set this to "off".
ModPagespeed on
# We want VHosts to inherit global configuration.
# If this is not included, they'll be independent (except for inherently
# global options), at least for backwards compatibility.
ModPagespeedInheritVHostConfig on
Das mod_pagespeed Modul nutzt per default voreingestellte Filterregeln, die Google mit „Core Filters“ bezeichnet. Laut Doku, und auch meinen bisherigen Erfahrungen genügen die CoreFilter für eine grundlegende Optimierung. Eine Übersicht über die angeschalteten Features der „Core Filters“ erhält man hier: Übersicht der CoreFilter.
Das spezifische Feintuning von mod_pagespeed, sprich das Ein- und Ausschalten einzelner Filter wird (unter Apache) mittels „ModPagespeedEnableFilters“ und „ModPagespeedDisableFilters“ vorgenommen. Diese Einstellungen können sowohl serverweit in /etc/apache2/mods-enabled/pagespeed.conf, als auch in VHosts vorgenommen werden.
Welche mod_pagespeed Module habe ich zusätzlich aktiviert?
In meiner pagespeed.conf habe ich zusätzlich zu den CoreFilters noch folgendes aktiviert:
ModPagespeedEnableFilters canonicalize_javascript_libraries
ModPagespeedEnableFilters inline_preview_images
ModPagespeedEnableFilters resize_mobile_images
ModPagespeedEnableFilters remove_comments
ModPagespeedEnableFilters move_css_to_head
In der VHosts Datei für diesen Blog hier, sind zusätzlich noch folgende Filter aktiv:
ModPagespeedEnableFilters convert_png_to_jpeg
ModPagespeedEnableFilters recompress_png
Das mod_pagespeed Modul nutzt ein Cache Verzeichnis um gecachte Daten dort abzulegen. Um die Zugriffe darauf zu beschleunigen / optimieren, habe ich dieses Verzeichnis per TempFileSystem gemountet; somit liegen die von mod_pagespeed gecachten Dateien quasi im Arbeitsspeicher.
Der Vollständigkeit halber hier noch die Zeile aus der /etc/fstab, um das TempFileSystem beim Serverstart zu laden:
tmpfs /var/cache/mod_pagespeed_tmpfs tmpfs defaults,size=500M 0 0
Mein Fazit zu mod_pagespeed: wer direkten (root) Zugriff auf seinen Webserver hat ist mit dem Google Pagespeed Modul sehr gut bedient. Man kann damit WordPress, und natürlich auch jedes andere CMS, damit optimieren ohne (WordPress)Plugins benutzen zu müssen. Und mal ehrlich: wer außer Google sollte wissen wie man Webseiten am Besten optimiert 🙂 ?
Gut, auch mod_pagespeed hat seine Grenzen: mit den Filtern die über den Core hinausgehen kann man sich seine WordPress Seite schnell zerschiessen; gerade was die Optimierung von CSS und Javascript angeht, sind manche WordPress Themes und Plugins sehr empfindlich. Hier empfehle ich die Filter, die nicht im Core enthalten sind pro VHost / WordPressinstallation zu testen, und nicht in der globalen Konfiguration abzulegen.
Ein weiterer Tipp: ich habe mit den Themes von Themeforest (affiliate Link) und den Plugins von Codecanyon (affiliate Link) sehr gute Erfahrungen gemacht.
Man bekommt dort für schmales Geld sehr gute Produkte, tollen Support, als auch stabilen und wertigen Code. An dieser Stelle ein paar Euro auszugeben, anstatt kostenlose Themes oder Plugins zu benutzen, spart Zeit und Nerven.