
WP Super Cache ist ein klasse Caching Plugin für WordPress, welches drei verschiedene Caching-Arten unterstützt.
- Legacy Page-Caching
Ist die langsamste Art, hier werden lediglich Daten, keine kompletten Seiten im Cache abgelegt - PHP um Cache-Dateien auszuliefern
Hier werden statische HTML Seiten generiert, aber PHP liefert diese weiterhin aus, ist schon ziemlich gut, aber es geht noch schneller - mod_rewrite Caching
Ist eigentlich für den (langsamen) Apache vorgesehen, aber mit der entsprechenden Config geht es auch mit dem flotten NGINX
Beim mod_rewrite-Caching würde eine .htaccess-Datei dafür sorgen, dass der Webserver zuerst versucht die statische HTLM Datei auszuliefern, welche in wp-content/cache/supercache/[domain]/[pfad] abgelegt wird. Kommt nun ein Request, wird Apache zuerst dort nach einer Datei suchen, ist sie vorhanden, kann diese ausgeliefert werden, ohne dass PHP überhaupt anspringen muss.
Damit diese Technik nun auch mit NGINX Funktioniert, muss man die Config folgendermaßen anpassen:
server { ... set $cache_uri $request_uri; #kein Cache nach POST Requests if ($request_method = POST) { set $cache_uri 'null cache'; } #kein Cache für URLs mit QueryString (get-Parameter) if ($query_string != "") { set $cache_uri 'null cache'; } #kein Cache für den Admin-Bereich, Ajax-Requests, CronJobs und diverse weitere if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { set $cache_uri 'null cache'; } #eingeloggte User oder Besucher, die gerade einen Kommentar angegeben haben, sollen ebenfalls keine statische Seite sehen if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") { set $cache_uri 'null cache'; } #try_files kennen wir ja schon, wird nun um den Versuch, die statische Version auszuliefern, erweitert location / { try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php?$args; } ... }
Das Ganze führt zu Antwortzeiten von unter 100ms, was auch Google mag
Wordpress
Facebook
GPlus