Obwohl ich das WordPress Plugin „Cachify“ schon seit langem auf meinem Blog einsetze, habe ich mich bisher noch nicht besonders damit beschäftigt. Bis vor einer halben Stunde war das Plugin auf die „Datenbank“-Caching-Methode gestellt. Zusätzlich war die HTML-Komprimierung aktiv. Jetzt läuft Cachify mit Memcached und bringt eine beachtenswerte Performancesteigerung mit sich (verarbeitete Seitenaufrufe pro Sekunde):
- Ohne Cachify: 19 trans/sec
- Datenbank: 38 trans/sec
- Festplatte: 13 trans/sec (?)
- Memcached: 177 trans/sec
Etwas merkwürdig hat sich der Festplatten-Cache verhalten. Damit war der Blog sogar langsamer als ohne Cache. Da für mich ohnehin memcached als klarer Sieger feststand und eine Festplatte niemals gegen den RAM ankommt, wollte ich auch nicht lange nach der Ursache forschen. Die Memcached-Methode steht nur für Nginx-Webserver bereit. Der Grund ist u.A. hier erklärt: Cachify Caching-Methoden
Das Caching via Memcached lohnt sich auf jeden Fall und ist schnell eingerichtet. Unter Ubuntu Server 14.04 werden einfach diese Pakete installiert:
apt-get install memcached php5-memcached
… PHP neu gestartet (Memcached sollte direkt nach der Installation schon laufen)
service php5-fpm restart
… und die Nginx-Konfiguration gemäß der Anleitung angepasst:
server { listen 80; listen [::]:80; listen 443 ssl http2; listen [::]:443 ssl http2; server_name thomas-leister.de www.thomas-leister.de; [...] location / { error_page 404 405 = @nocache; if ($query_string = true){ return 405; } if ($request_method = POST){ return 405; } if ($request_uri ~ "/wp-"){ return 405; } if ($http_cookie ~ (wp-postpass|wordpress_logged_in|comment_author)_ ){ return 405; } default_type text/html; add_header X-Powered-By Cachify; set $memcached_key $http_host$uri; memcached_pass localhost:11211; } ## nocache location @nocache{ try_files $uri $uri/ /index.php?$args; } # Add trailing slash to */wp-admin requests. rewrite /wp-admin$ $scheme://$host$uri/ permanent; # Directives to send expires headers and turn off 404 error logging. location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { access_log off; log_not_found off; expires max; } # Directives to send expires headers and turn off 404 error logging. location ~* ^.+\.(css)$ { access_log off; log_not_found off; expires 1w; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass php-thomasleister; } }
Dann noch Nginx neu laden:
service nginx reload
… und in Cachify auf „Memcached“ stellen. Fertig.
Mit dem Tool „siege“ kann man dann die Performance testen:
siege -b meinblog.de
http://www.raait.net
Super! Gehrade mal auf einem Testsystem Probiert und erziehele damit ein enormes pluss an performanc!
Werde es weiter Testen und ggf einen Artikel dazu selber Verfassen im Bezug auf NGINX und WordPress Optimierrungen.
http://www.raait.net/blog/ sargt Danke!
Memcached wird nicht angezeigt bei mir. Warum?
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Weil du Memcached vermutlich noch nicht installiert hast. Die Option wird dir erst angezeigt, wenn du es wie oben beschrieben installiert hast.
https://tictactux.de
Ich würde dir vorschlagen, dass du noch einen Blick auf GTMetrix wirfst:
https://gtmetrix.com/reports/thomas-leister.de/fYHm0FOm
Die Seite nutzt Google Pagespeed und YSlow und gibt Tipps zur Performanceoptimierung.
Läufst Du schon auf php7?
Schaffe damit bei einer frischen WordPress-Installation (1 Beitrag, default-Theme) ohne Cache knapp 100 trans/sec.
Zurück auf php5 sind maximal 55 trans/sec drin. Ohne Cachify!
Auch die CPU-Last ist um einiges geringer als mit php5.
(Mit Deiner Cachify-nginx-Config bekomme ich unter /wp-admin/ einen Redirect-loop, da muss ich bei Zeiten noch mal drüber schauen.)
(Klar kann man das nicht mit deiner WordPress-Installation vergleichen, aber der Performanceschub von 5 auf 7 ist gewaltig. Ich fliege nahezu durch den wp-admin wo ich vorher inakzeptable Ladezeiten von über einer Sekunde hatte.)
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Auf dem Server, auf dem dieser Blog läuft, läuft noch PHP 5 weil andere software mit 7 noch Probleme hat. Werde aber bald umstellen können :)
LG Thomas
Interessant wäre ein Vergleich mit einem reverse Proxy wie Varnish. Hast du den schon mal getestet?
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Der Gedanke, mit Varnish zu vergleichen, ist mir heute auch gekommen. Vielleicht habe ich bald Zeit dazu. :) Lg Thomas
https://www.house-of-loops.de
Kann es sein, dass durch das Cacheing nun die SuFu hier auf der Seite nicht mehr funktioniert?
MfG Sebastian
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Tatsächlich. Die Suche funktioniert nicht mehr. Auch das antworten auf Kommentare funktioniert nur noch über die Admin-Oberfläche. Ich werde den Cache mal deaktivieren und mir das später mal ansehen. Sollte sich in den Nginx Config ausbessern lassen.
LG Thomas
Ohne Cachify: 19 trans/sec
Das ist doch der beste Grund warum man dieses Ressourcenmonster erst gar nicht benutzen sollte. Bei Änderungen oder Kommentaren die statische Seite neu generieren und fertig.
Wäre durchaus mal interessant wie viel CO2 wegen WordPress unnötig in die Luft geblasen wird.