Blog

Compression

Wichtiges Thema, Anstellen ohne wenn und Aber.

Lass uns gemeinsam kurz in die Kommunikation zwischen Besucher-Browser und deinem Server lauschen. Am besten etwas bildlicher gesprochen.

Der Browser deines Webseitenbesuchers sagt deinem Server, ob und welche Dateien der Browser deines Webseitenbesuchers komprimier empfangen möchte. Dein Apache-Server schaut in die Anfrage hinein und sieht was an Kompression der Besucher-Browser akzeptiert. Nun liegt es an deinem Apache-Server, welche Fähigkeiten der Server hat, wie du als Webseitenbetreiber bzw. Serverbetreiber auf diese "Kundenwünsche" reagierst.

Mit den Kompressionen bietest du dem Browser deines Webseitenbesuchers an, komprimierte assets laden zu können.

2 Kompressionsmethoden

  • Brotli
    • Modernes Format, komprimierter als Gzip
  • Gzip
    • Standard-Format, geht überall bis auf IE11

2 Compression-Vorgehensweisen

Dynamische Kompression

Die dynamische Kompression wird durch den Apache-Server mittels mod_deflate oder mod_brotli bei jedem Aufruf der einzelnen Ressource durchgeführt. Für dynamische html-Seiten oder json-responses , empfiehlt sich die dynamische Kompression, für Bilder und andere eher statische Assets empfiehlt sich die statische Kompression.

mod_brotli in der htaccess

<IfModule mod_brotli.c>
    AddOutputFilterByType BROTLI_COMPRESS text/html
</IfModule>

Test mod_brotli

Was dein Server kann oder nicht kann ist bei Managed-Servern oder Shared-Hostings immer nicht so einfach herauszufinden. Wir bieten dir ein kostenloses .htaccess-Snippet mit dem du prüfen kannst ob mod_brotli auf deinem Server verfügbar ist.

@todo link apache-modules-test:mod_brotli

mod_deflate in der htaccess

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
</IfModule>

AddOutputFilterByType mod_filter

Test mod_deflate

Was dein Server kann oder nicht kann ist bei Managed-Servern oder Shared-Hostings immer nicht so einfach herauszufinden. Wir bieten dir ein kostenloses .htaccess-Snippet mit dem du prüfen kannst ob mod_brotli auf deinem Server verfügbar ist.

@todo link apache-modules-test:mod_deflate

Auswahl der Mime-Types

Da nicht immer klar ist, welchen MIME-Type der Server zurückgibt, muss auch die MIME-Type Rückgabe geprüft werden. Browser-Inspection auf und schauen.

apache-response-header-mime-type-in-browser-console

Falls dein Server also application/javascript statt text/javascript zurückgibt musst du in jedem Falle application/javascript in AddOutputFilterByType angeben.

@todo check text/javascript als nativer richtiger type auch angegeben werden muss.(eigentlich nicht, da der response header durch den server mit application/javascript ausgeben wurde.)

Statische Kompression

In Shops bzw. auf Seiten mit viel Traffic macht es Sinn statische assets, sprich Bilder, Css, Js vorher zu in komprimierter Version auf dem Server zu speichern.

static scripts

Mix aus statisch und dynamischen Kompressionen

In Shop-Webseiten:

Dies wird eher die Regel als die Ausnahme sein. Bilder und Javascript sowie Css Dateien wird man als Webseitenbetreiber so weit wie möglich statisch anlegen. Dynamische Dinge wie eine json-response oder die html-seite wird man eher dynamisch komprimieren.

Auf Blogseiten. Vermutlich alles statisch soweit möglich. Bis auf dynamische Aspekte der Seite, die mit Ajax geladen werden. Diese werden dann natürlich dynamisch komprimiert.