{"id":45,"date":"2008-02-20T11:08:15","date_gmt":"2008-02-20T10:08:15","guid":{"rendered":"http:\/\/blog.till.de\/2008\/02\/20\/serverseitige-methoden-zur-beschleunigung-von-webseiten\/"},"modified":"2008-02-21T09:15:44","modified_gmt":"2008-02-21T08:15:44","slug":"serverseitige-methoden-zur-beschleunigung-von-webseiten","status":"publish","type":"post","link":"https:\/\/blog.till.de\/allgemein\/serverseitige-methoden-zur-beschleunigung-von-webseiten\/","title":{"rendered":"Serverseitige Methoden zur Beschleunigung von Webseiten"},"content":{"rendered":"

Datenkompimierung unter Apache2 mit mod_deflate<\/h3>\n

Serverseitige Komprimierung von Daten ist eine gute M\u00f6glichkeit um die zu sendende Datenmenge zu verringern. Somit wird das Laden einer Webseite beschleunigt und Traffic gespart. Zu beachten ist dabei, dass sich die Prozessorlast des Servers durch das Komprimieren erh\u00f6ht.<\/p>\n

<\/p>\n

Bei einem Apache2-Webserver kann man f\u00fcr die Komprimierung das Modul mod_deflate verwenden. Im Folgenden werde ich die Konfiguration des Apache2-Webservers in Bezug auf Kompression beschreiben.<\/p>\n

Hier wird davon ausgegangen, dass das Modul mod_deflate zusammen mit Apache2 auf dem System installiert ist.
\nUm es zu aktivieren tippen wir einfach a2enmod deflate<\/code> ein.
\nDanach muss Apache2 mit \/etc\/init.d\/apache2 restart<\/code> neu gestartet werden.<\/p>\n

Die folgenden Eintr\u00e4ge k\u00f6nnen entweder in der globalen Konfiguration f\u00fcr den ganzen Server oder in der entsprechenden Konfiguration f\u00fcr virtuelle Hosts gemacht werden.<\/p>\n

In der n\u00e4chsten Zeile weisen wir das Modul an, welche Dateien komprimiert werden sollen. Das sind hier HTML, Text, XML, CSS und JavaScript.<\/p>\n

AddOutputFilterByType DEFLATE text\/html text\/plain text\/xml text\/css application\/x-javascript<\/code><\/p>\n

Die folgenden Eintr\u00e4ge sollten noch hinzugef\u00fcgt werden, um Kompatibilit\u00e4t mit \u00e4lteren Browsern zu gew\u00e4hrleisten.<\/p>\n

BrowserMatch ^Mozilla\/4 gzip-only-text\/html
\nBrowserMatch ^Mozilla\/4\\.0[678] no-gzip
\nBrowserMatch \\bMSIE !no-gzip !gzip-only-text\/html<\/code><\/p>\n

Die n\u00e4chsten Zeilen weisen das Modul an, Informationen \u00fcber die Kompression in ein Logfile zu schreiben. Das Loggen ist nicht notwendig, erm\u00f6glicht aber das Testen der richtigen Funktionsweise der Kompression.<\/p>\n

DeflateFilterNote Input input_info
\nDeflateFilterNote Output output_info
\nDeflateFilterNote Ratio ratio_info
\nLogFormat '\"%r\" %{output_info}n\/%{input_info}n (%{ratio_info}n%%)' deflate
\nCustomLog \/var\/log\/apache2\/deflate_log deflate<\/code><\/p>\n

Nach ??nderung der Konfiguration muss der Apache2 wieder neu gestartet werden: \/etc\/init.d\/apache2 restart<\/code><\/p>\n

Senden von Informationen \u00fcber die G\u00fcltigkeitsdauer von Dateien<\/h3>\n

Man kann den Apache2-Webserver anweisen, Informationen \u00fcber die G\u00fcltigkeitsdauer verschiedener Dateitypen im Header zu senden. Dies geschieht \u00fcber das Apache-Modul mod_expires. Der Browser beziehungsweise Proxy-Server kann diese Dateien \u00fcber die Dauer der G\u00fcltigkeit speichern und muss sie erst nach Ablauf dieser Zeit neu laden. Bei Browsen ist ein eingeschalteter Cache Voraussetztung.<\/p>\n

Im folgenden ist eine Beispielkonfiguration f\u00fcr Apache2 zu sehen, bei der Grafiken eine G\u00fcltigkeit von 3 Tagen, CSS-Dateien eine G\u00fcltigkeit von 2 Tagen und alle anderen Dateien eine G\u00fcltigkeit von 24 Stunden haben.
\n
\n<IfModule mod_expires.c>
\n# Modul aktivieren
\nExpiresActive on<\/code>
\n
\n# \u00fcbliche Grafiken sind 3 Tage g\u00fcltig
\nExpiresByType image\/jpg \"access plus 3 days\"
\nExpiresByType image\/gif \"access plus 3 days\"
\nExpiresByType image\/jpeg \"access plus 3 days\"
\nExpiresByType image\/png \"access plus 3 days\"
\n<\/code>
\n# CSS-Dateien sind 2 Tage g\u00fcltig
\nExpiresByType text\/css \"access plus 2 days\"
\n<\/code>
\n# alle anderen Dateien sind 24 Stunden g\u00fcltig
\nExpiresDefault \"access plus 24 hours\"
\n<\/IfModule><\/code><\/p>\n

Identifikation von Dateien mit ETags<\/h3>\n

Dateien k\u00f6nnnen serverseitig eindeutige Kennungen, sogenannte ETags, zugeordnet werden. Diese k\u00f6nnen aus I-Node, Zeit der letzten ??nderung und Gr\u00f6ße der Datei berechnet werden.<\/p>\n

Der ETag wird bei der ersten Anfrage eines Clients vom Server im Header gesendet. Der Client speichert die Datei und den zugeh\u00f6rigen ETag. Bei weiteren Anfragen sendet der Client den ETag mit. Auf dem Server wird der empfangene ETag mit dem gespeicherten ETag verglichen. Wenn die ETags gleich sind, sich also I-Node, ??nderungszeit oder Gr\u00f6ße der Datei nicht ge\u00e4ndert haben wird die Datei nicht erneut gesendet. Weichen die ETags voneinander ab, bedeutet das, dass sich die Datei auf dem Server ge\u00e4ndert hat. Die Datei wird erneut gesendet.<\/p>\n

Diese Funktion wird mit Hilfe der Apache-Direktive FileETag<\/code> umgesetzt.
\nM\u00f6gliche Schl\u00fcsselw\u00f6rter f\u00fcr FileETag<\/code> sind:<\/p>\n

    \n
  • INode<\/code> Die I-Node-Nummer wird in die Berechnung mit einbezogen<\/li>\n<\/ul>\n
      \n
    • MTime<\/code> Datum und Uhrzeit der letzten ??nderung werden mit einbezogen<\/li>\n<\/ul>\n
        \n
      • Size<\/code> Die Anzahl der Bytes in der Datei wird mit einbezogen<\/li>\n<\/ul>\n
          \n
        • All<\/code> Alle verf\u00fcgbaren Angaben werden verwendet<\/li>\n<\/ul>\n
            \n
          • None <\/code>Es wird keine ETag-Angabe in die Antwort eingef\u00fcgt<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"

            Datenkompimierung unter Apache2 mit mod_deflate Serverseitige Komprimierung von Daten ist eine gute M\u00f6glichkeit um die zu sendende Datenmenge zu verringern. Somit wird das Laden einer Webseite beschleunigt und Traffic gespart. Zu beachten ist dabei, dass sich die Prozessorlast des Servers durch das Komprimieren erh\u00f6ht.<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"_ti_tpc_template_sync":false,"_ti_tpc_template_id":"","footnotes":""},"categories":[],"tags":[53,55,56,47],"_links":{"self":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts\/45"}],"collection":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/comments?post=45"}],"version-history":[{"count":0,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts\/45\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/media?parent=45"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/categories?post=45"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/tags?post=45"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}