25. September 2014

Wordpress schneller machen: Connection keep-alive per .htaccess aktivieren

   8 Kommentare

Share on Facebook7Tweet about this on Twitter0Share on Google+2Share on LinkedIn1Email this to someone

Ein wichtiger Schritt zur Optimierung eurer Seiten-Ladezeit ist der Befehl „connection: keep-alive“, der das Laden verschiedener Dateien über eine Verbindung ermöglicht und deswegen von vielen Tools geprüft wird. Hier die Anleitung wie ihr keep-alive einfach per .htaccess aktiviert.

Vor der Optimierung

Webpagetest.org: So sollte das Testergebnis eurer Seite nicht aussehen.

Was ist keep-alive?

Eine Internetseite besteht üblicherweise aus einer HTML-Datei und dazugehörigen Grafiken, CSS- und JScript Dateien. Im HTML ist definiert, welche anderen Elemente durch den Browser vom Server heruntergeladen werden müssen um die Seite anzuzeigen. Früher wurde für jedes Element eine eigene tcp Verbindung zwischen Server und Webbrowser aufgebaut um die Datei zu laden. Keep-alive ist eine Methode, um mehrere Daten über nur eine tcp Verbindung zwischen Webserver und Webbrowser herunterzuladen. Das ist schneller als wenn für jede Datei eine eigene Verbindung hergestellt werden muss. Deswegen sollte das „Connection keep-alive“ standardmäßig aktiviert sein. Bei vielen shared-hosting Anbietern ist es dies allerdings nicht, weshalb ihr eure Konfiguration zum Beispiel mit webpagetest.org testen solltet. Wenn euer Ergebnis aussieht, wie in dem Beispiel oben, dann solltet ihr aktiv werden um die Performance eurer Seite zu verbessern.

So wird keep-alive aktiviert

Im http Header wird das Verhalten definiert. Ist keep-alive nicht aktiviert, liegt das daran, dass eure Headers „connection: close“ beinhalten. Der Server schließt die Verbindung nach dem Download einer Datei. Wenn der Header zu „connection: keep-alive“ geändert wird, bleibt die Verbindung offen, sodass mehrere Daten heruntergeladen werden können.

Den HTTP Header per .htaccess ändern

Eine Möglichkeit keep-alive im Header zu aktivieren ist über die .htaccess Datei. Hierzu benötigt ihr darauf Zugriff, zum Beispiel per FTP. Wichtig: vorher zur Sicherheit eine Kopie der Datei lokal speichern, so dass ihr wieder den Urzustand herstellen könnt, falls etwas nicht klappt. Außerdem solltet ihr die Datei nur mit einem richtigen Editor bearbeiten (Word ist keiner).

Diesen Code fügt ihr in die .htaccess Datei ein:

<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>

Diese Zeilen Code reichen aus, damit eure Seite ein Stück schneller geladen werden kann – wenn der Hoster die Funktion in eurem (Shared)-Hosting-Paket unterstützt.

Keep-alive per Plugin aktivieren

Umfangreiche Plugins wie W3 Total Cache beinhalten neben anderen Optimierungsmöglichkeiten die Funktion um das „connection: keep-alive“ im Header der Seite zu aktivieren.

Fazit: mit nur einer Zeile Code in eurer .htaccess Datei könnt ihr die Ladezeit eurer Seite verbessern.

Share on Facebook7Tweet about this on Twitter0Share on Google+2Share on LinkedIn1Email this to someone
Hans Jung

Hans Jung

Hans ist Datenschutzbeauftragter und bekennender WordPress-Fan – und versucht beides unter einen Hut zu bekommen.
Hans Jung

Du willst up-to-date bleiben?

Trage dich jetzt in unseren kostenlosen Newsletter ein, um stets die aktuellsten Neuigkeiten rund um Wordpress zu erhalten.

Wir geben deine Daten nicht weiter! Wir hassen Spam genauso wie du!

8 Kommentare

Reaktionen auf diesen Beitrag

  • Uwe Werner

    Leider wird die ganze Seite dadurch lahm gelegt.

  • Hans Jung

    Falls in eurer .htaccess bereits ein Block mit

    ifModule mod_headers.c
    /ifModule

    vorhanden ist, fügt ihr dort am besten folgende Zeile ein:

    Header set Connection keep-alive

    Alternativ den gesamten Block am Ende der .htaccess einfügen, so dass der Wert nicht von einem anderen Eintrag überschrieben wird.
    Es kann sein, dass die Konfiguration eures Hosters den hier vorgestellten Weg nicht unterstützt/unterbindet. Wenn sich die Fehler also nicht beheben lassen, dann solltet ihr wieder die ursprüngliche .htaccess verwenden.

  • Hallo Hans,

    auch bei mir funktioniert das nicht. Liegt vielleicht auch daran, dass nicht endgültig klar ist, wo das hin soll.
    Vielleicht könntest Du einfach mal ein komplettes Beispiel angeben, wie man die .htaccess bestücken muss. Also im Prinzip eine Zusammenfassung aus dem was Du im Text sagst und dem was Du per Kommentar hinzufügst 🙂

    Das wäre toll. Danke.

  • Hallo Hans,

    habe die paar Zeilen in die htaccess eingefügt – und eine Art Wunder erlebt:
    Eine Site, die bislang aus unerklärlichen Gründen Eeeeeeeeeeeewigkeiten brauchte (Server ist Strato), wird nun hastenichjesehen geladen.
    Desterwegens kommt von mir ein dickes Danke für den Tip!

    ciao
    Arthur

  • nebeltal

    Tja, egal wo ich es einfüge: 500 Internal Server Error

  • So sah meine .htaccess nach der Änderung aus:

    # BEGIN WordPress
    Header set Connection keep-alive
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    Dann erhielt ich:

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, support@ xxx .ch and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

    Apache Server at www. xxx .ch Port 80

    Mit dieser (alten) Version der .htaccess funktioniert meine Seite:

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    Schade, dass es kein Beispiel gab wo, wie, was eingefügt werden soll.
    Auch mit der Beschreibung in weiteren Kommentaren merkt man, dass ein Profi nicht in der Sprache des „nicht-Profis“ spricht…

  • Hans Jung

    Hallo Roger,
    versuche mal den Code ausserhalb des # WordPress Bereichs zu schreiben:

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    # Start eigener Code – Du musst die <> noch wie im Artikel beschrieben einfügen

    ifModule mod_headers.c
    Header set Connection keep-alive
    /ifModule

    # End eigener Code

    Einige Anbieter von Shared-Server unterbinden das connection keep-alive. In diesen Fällen komment es auch zur Fehlermeldung „Error occurred: 500 – internal server error“

Schreibe einen Kommentar

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