Varnish Optimierung für WordPress

Nachdem wir Varnish-Cache erfolgreich installiert haben und WordPress alle nötigen Plugins erhalten hat, wollen wir die Hit Rate im Varnish erhöhen.

Punkt 1: vcl_recv

Varnish soll alles aus unserem WordPress Blog cachen, außer wp-login.php, wp-admin dem Cookie wordpress_logged_in_ und den Suchanfragen.

sub vcl_recv {
        # WordPress Site adminforge.de
        #
        # logged in users must always pass
        if( req.http.host ~ "adminforge.de" && req.url ~ "^/wp-(login|admin|comments-post)" || req.http.Cookie ~ "wordpress_logged_in_" ){
                return (pass);
        }
        # don't cache search results
        if( req.http.host ~ "adminforge.de" && req.url ~ "\?s=" ){
                return (pass);
        }
        # else ok to fetch a cached page
        if( req.http.host ~ "adminforge.de" ){
                unset req.http.Cookie;
                return (lookup);
        }
        ##############################
}

Ersetzt adminforge.de mit eurer Blog Domain.

Punkt 2: vcl_fetch

Die Backendanfragen erhalten ebenfalls verfeinerte Filter für unsere Blog Domain.

sub vcl_fetch {
        # WordPress Site adminforge.de
        #
        # only allow cookies to be set if we're in admin area - i.e. commenters stay logged out
        if( beresp.http.Set-Cookie && req.http.host ~ "adminforge.de" && req.url !~ "^/wp-(login|admin)" ){
                unset beresp.http.Set-Cookie;
        }

        # don't cache response to posted requests or those with basic auth
        if ( req.http.host ~ "adminforge.de" && req.request == "POST" || req.http.Authorization ) {
                return (hit_for_pass);
        }

        # only cache status ok
        if ( req.http.host ~ "adminforge.de" && beresp.status != 200 ) {
                return (hit_for_pass);
        }

        # don't cache search results
        if( req.http.host ~ "adminforge.de" && req.url ~ "\?s=" ){
                return (hit_for_pass);
        }
        ###############################
}

Punkt 3: Varnish TTL erhöhen

Die Default-TTL von Varnish beträgt 120 Sekunden. Solch ein niedriger Wert ist spitze für stark besuchte Webseiten, bei denen die Objekte nur kurz im Cache erhalten bleiben sollen. Bei weniger stark besuchten Blogs können wir diesen Wert getrost erhöhen.

sub vcl_fetch {
        # Ignore cache headers from the backend
        if (beresp.ttl < 48h) {
                unset beresp.http.expires;
                set beresp.ttl = 48h;
                return (deliver);
        }
}

Punkt 4: Backend Anfragen überprüfen

Nachdem wir Varnish für WordPress optimiert haben, beobachten wir welche Anfragen unseren Webserver noch erreichen.

varnishtop -b -i TxURL
Dominion

Dominion

Linux Systemadministrator

Das könnte Dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.