Zurück zur Startseite

Varnish-Cache: Cache mit HTTP-Headern steuern

Der Varnish-Cache wertet die HTTP-Header aus, um zu entscheiden, ob etwas gecached werden soll oder nicht.

Request-Header

Bei eingehenden Anfragen wird der Cookie-Header ausgewertet. Alle Anfragen mit einem Cookie sind vom Caching ausgenommen.

Sollen diese dennoch vom Caching profitieren, gibt es zwei Möglichkeiten: Für statischen Inhalt sollte eine eigene Domain verwendet werden, auf der keine Cookies zum Einsatz kommen. Zum Beispiel: static.example.com

Alternativ können über die Konfiguration gewisse oder alle Cookies entfernt werden. Entweder für alle oder nur für gewisse Requests. Gerne erarbeiten wir mit Ihnen zusammen die für Sie passende Konfiguration. Bitte kontaktieren Sie dazu unseren Support unter support@nine.ch oder per Telefon +41 44 637 40 40.

Response-Header

Mit folgenden HTTP-Headern in der Antwort des Webservers kann das Caching-Verhalten von Varnish gesteuert werden. Gesetzt werden können diese Header entweder in Ihrer Webapplikation oder bei Apache in der .htaccess-Datei.

Cache-Control

Die Angabe für s-maxage oder, falls nicht vorhanden, max-age gibt an, für wie viele Sekunden die Seite gecached werden kann. Alle anderen Angaben wie public oder no-cache werden bis und mit Varnish 3 ignoriert. Dieser Header hat immer Vorrang vor Expires.

Cache-Control: public, max-age=1372, s-maxage=1072

Mit dem mod_headers von Apache kann dies in der .htaccess-Datei folgendermassen gesetzt werden.

<IfModule mod_headers.c>
  Header append Cache-Control "public, max-age=1372, s-maxage=1072"
</IfModule>

Expires

Mit diesem Header wird angegeben, bis wann ein File maximal gecached werden kann. Dieser Header wird nur ausgewertet, wenn Cache-Control nicht gesetzt ist.

Expires : Thu, 16 Apr 2015 08:43:41 GMT

Mit dem mod_expires von Apache kann dies in der .htaccess Datei für unterschiedliche Datei-Typen folgendermassen konfiguriert werden:

<IfModule mod_expires.c>
  ExpiresActive on

  # Perhaps better to whitelist expires rules? Perhaps.
  ExpiresDefault      "access plus 1 month"

  # Your document html
  ExpiresByType text/html "access plus 0 seconds"

  # Favicon (cannot be renamed)
  ExpiresByType image/x-icon "access plus 1 week"

  # Media: images
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
  ExpiresByType image/jpg "access plus 1 month"
  ExpiresByType image/jpeg "access plus 1 month"
</IfModule>

Vary

Mit diesem Header wird angegeben, anhand welchen Request-Headern es für eine einzelne Seite mehrere Versionen geben kann. So kann es für eine Seite verschiedene Versionen geben, je nach angeforderter Accept-Language oder gesetztem User-Agent. Dies kann das Caching aber erheblich erschweren, wenn es viele unterschiedliche Versionen gibt.

Vary: Accept-Language

Mit dem mod_headers von Apache kann dies in der .htaccess-Datei folgendermassen gesetzt werden.

<IfModule mod_headers.c>
  Header append Vary "Accept-Language"
</IfModule>

Haben Sie die gewünschten Informationen nicht gefunden?

Kontaktieren Sie unseren Support:

+41 44 637 40 40 support@nine.ch