Beschleunigen der Antwortzeit von WordPress (für Apache)

Google und natürlich auch die Nutzer von Webseiten legen einen immer größeren Fokus auf die Antwortzeit des Webservers. Google bietet hierfür ein spezielles Tool welches eine Webseite auf Verbesserungsmöglichkeiten hin untersucht. Neben den recht einfach via Plugin’s lösbaren Problemen wie z. B. die minifizierung und Zusammenführung von CSS und Javescript Dateien gibt es auch etwas komplexere Probleme die gelöst werden müssen um einen guten Wert zu erreichen.

Seiteninhalte

Komprimieren & Cachen

Der einfachste Weg die vom (Apache-) WEbserver bereitgestellten Daten so auszuliefern, dass diese maximal komprimiert sind und gleichzeitig vom Browser gecached werden, ist das einfügen des nachfolgenden codes in the virtual host Konfiguration:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault A2592000
     
    <FilesMatch "\.(txt|xml|js)$">
        ExpiresDefault A2592000
    </FilesMatch>
     
    <FilesMatch "\.(css)$">
        ExpiresDefault A2592000
    </FilesMatch>
     
    <FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4|m4v|ogg|webm|aac)$">
        ExpiresDefault A2592000
    </FilesMatch>
     
    <FilesMatch "\.(jpg|jpeg|png|gif|swf|webp)$">
        ExpiresDefault A2592000
    </FilesMatch>
</IfModule>
 
<IfModule mod_headers.c>
    <FilesMatch "\.(txt|xml|js)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
 
    <FilesMatch "\.(css)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
 
    <FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4|m4v|ogg|webm|aac)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
 
    <FilesMatch "\.(jpg|jpeg|png|gif|swf|webp)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
</IfModule>
 
<IfModule mod_deflate.c>
    <IfModule mod_setenvif.c>
        <IfModule mod_headers.c>
            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
            RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
        </IfModule>
    </IfModule>
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE "application/atom+xml" \
                                      "application/javascript" \
                                      "application/json" \
                                      "application/ld+json" \
                                      "application/manifest+json" \
                                      "application/rdf+xml" \
                                      "application/rss+xml" \
                                      "application/schema+json" \
                                      "application/vnd.geo+json" \
                                      "application/vnd.ms-fontobject" \
                                      "application/x-font-ttf" \
                                      "application/x-javascript" \
                                      "application/x-web-app-manifest+json" \
                                      "application/xhtml+xml" \
                                      "application/xml" \
                                      "font/eot" \
                                      "font/opentype" \
                                      "image/bmp" \
                                      "image/svg+xml" \
                                      "image/vnd.microsoft.icon" \
                                      "image/x-icon" \
                                      "text/cache-manifest" \
                                      "text/css" \
                                      "text/html" \
                                      "text/javascript" \
                                      "text/plain" \
                                      "text/vcard" \
                                      "text/vnd.rim.location.xloc" \
                                      "text/vtt" \
                                      "text/x-component" \
                                      "text/x-cross-domain-policy" \
                                      "text/xml"
 
    </IfModule>
    <IfModule mod_mime.c>
        AddEncoding gzip              svgz
    </IfModule>
 
</IfModule>

PHP OpCache

Ein weiterer Weg um insbesondere die grunsätzliche Antwortzeit des eigenen Server zu verbessern ist der Einsatz von OpCache. Dieses PHP Modul sorgt dafür, dass wesentliche Code Teile nicht erst zur Laufzeit berechnet werden müssen da sie gespeichert werden.

Anpassungen der php.ini

vi /etc/php5/apache2/php.ini

Suche folgenden Code:

;opcache.enable=0

Und ersetzte ihn mit:

opcache.enable=1

Neben dem grundsätzlichen einschalten des Moduls kann man noch weitere Einstellungen anpassen um den Cache auszureizen. z. B.

opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache_revalidate_freq = 240

Einschalten des PHP Moduls

sudo php5enmod opcache

Neustart des Webservers

sudo service apache2 restart