{"id":260,"date":"2010-01-20T09:45:27","date_gmt":"2010-01-20T07:45:27","guid":{"rendered":"http:\/\/tn.genano.de\/wordpress\/?p=260"},"modified":"2010-01-20T09:45:27","modified_gmt":"2010-01-20T07:45:27","slug":"expire-header-mit-mod_expire-im-apache-2","status":"publish","type":"post","link":"https:\/\/tn.genano.de\/wordpress\/2010\/01\/20\/expire-header-mit-mod_expire-im-apache-2\/","title":{"rendered":"Expire Header mit mod_expire im Apache 2"},"content":{"rendered":"<p>Wozu Expire Header?<\/p>\n<p>Oft kommt es vor, das man Daten \u00fcber einen Webserver ausliefert, welche lange Zeit konsistent bleiben, Logos, bestimmte Grafiken etc. Wenn man solche Bestandteile auf seiner Webseite hat, sollte man diese mit einem Expire Header versehen. Der Expire Header bewirkt dabei, das die statischen Bestandteile der Seite bei (den meisten) Nutzern nur einmal heruntergeladen werden und bis zum Ende der Expiration im Cache des Browser gehalten werden. Besucht der Anwender innerhalb der Expiration Zeit die Webseite nochmals, werden die statischen Bestandteile aus dem lokalem Cache des Benutzers geladen und m\u00fcssen somit nicht erneut heruntergeladen werden. Dies bietet zwei Vorteile, zum einen spart man damit Bandbreite und Datenvolumen zum anderen ist die Ausgabe aus dem Cache, des Browsers, in der Regel deutlich schneller als das Herunterladen des Contents. Bei der Verbreitung von Breitbandanschl\u00fc\u00dfen (zu mindestens in Europa) kommt dem Argument des schnelleren Seitenaufbaus oft mehr Bedeutung zu als der genutzten Bandbreite, wobei dies nat\u00fcrlich auch stark vom jeweiligen Angebot abh\u00e4ngt.<\/p>\n<p>Hin und wieder hat man den Bedarf Expire Header von bestimmten Dateitypen zu setzen, entweder weil die dahinterliegende Applikation dies nicht richtig kann, oder weil statischer Content direkt \u00fcber den Apache ausgeliefert werden soll. Hierzu kann man das Modul mod_expire des Apache&#8217;s verwenden.<\/p>\n<p>Hier ein Beispiel:<\/p>\n<p>#set expire header for the static directorys to 7 days<br \/>\n&lt;Directory \/img\/&gt;<br \/>\nExpiresActive On<br \/>\nExpiresDefault &#8222;access plus 7 days&#8220;<br \/>\n&lt;\/Directory&gt;<\/p>\n<p>In diesem Beispiel wird ein Expire Header f\u00fcr von 7 Tagen (bei wirklich statischem Content zu kurz) auf das Verzeichnis \/img gesetzt.<\/p>\n<p>Sobald das Modul aktiv ist und erfolgreich Arbeitet, kann man sich z.B. mit Firebug anschauen ob die \u00c4nderungen erfolgreich waren:<br \/>\n<code>Date Wed, 20 Jan 2010 07:22:58 GMT<br \/>\nServer Apache<br \/>\nLast-Modified Wed, 08 Oct 2008 08:36:30 GMT<br \/>\nEtag \"eb039a-33-458b9d013df80\"<br \/>\nAccept-Ranges bytes<br \/>\nContent-Length 51<br \/>\nCache-Control max-age=604800<br \/>\nExpires Wed, 27 Jan 2010 07:22:58 GMT<br \/>\nContent-Type image\/gif<br \/>\n<\/code><br \/>\nHier sieht man nun sehr sch\u00f6n wie im Header die entsprechenden Expire Informationen gesetzt werden.<\/p>\n<p>Hierzu geh\u00f6ren sowohl das Feld &#8222;Last-Modified&#8220;, &#8222;Cache-Control&#8220; und nat\u00fcrlich &#8222;Expires&#8220;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine kleine Hilfestellung zum Umgang mit mod_expire im Apache 2. <a href=\"https:\/\/tn.genano.de\/wordpress\/2010\/01\/20\/expire-header-mit-mod_expire-im-apache-2\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,43],"tags":[173,250,174,175,172,171,170,177,178,12,50,176,169],"class_list":["post-260","post","type-post","status-publish","format-standard","hentry","category-apache","category-konfiguration","tag-access","tag-apache","tag-bandbreite-cache-control","tag-cache","tag-directory","tag-expiration","tag-expire","tag-expires","tag-header","tag-httpd","tag-httpd-conf","tag-last-modified","tag-mod_expire"],"_links":{"self":[{"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/posts\/260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/comments?post=260"}],"version-history":[{"count":0,"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/posts\/260\/revisions"}],"wp:attachment":[{"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/media?parent=260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/categories?post=260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tn.genano.de\/wordpress\/wp-json\/wp\/v2\/tags?post=260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}