SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 1 / 25© SpeedPartner GmbH
Web-Performance-
Optimierung
mit varnish
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 2 / 25© SpeedPartner GmbH
Über den Vortrag
Aufbau / Ziele:
● Einführung / Überblick
● Varnish-Tools (Administration, Logging und Statistik)
● Konfigurationssprache
● Konfigurationsbeispiele aus der Praxis
● Edge-Side-Includes
● TYPO3: Automatische Löschung Varnish-Cache bei Änderungen
● Links / Hilfen
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 3 / 25© SpeedPartner GmbH
Über mich
● Stefan Neufeind
● Mit-Geschäftsführer der SpeedPartner GmbH aus Neuss
ein Internet-Service-Provider (ISP)
● Individuelle TYPO3-Entwicklungen
● Hosting, Housing, Managed Services
● Domains / Domain-Services
● IPv6, DNSSEC, ...
● Aktive Mitarbeit im Community-Umfeld (PHP/PEAR, TYPO3, Linux)
● Freier Autor für z.B. t3n, iX, video2brain, ...
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 4 / 25© SpeedPartner GmbH
Ablauf http-Anfragen
Klassischer Fall für eine direkte http-Anfrage
Client sendet Anfragen
an einen/mehrere
Server ...
... welche diese
individuell (!)
bearbeiten und
beantworten
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 5 / 25© SpeedPartner GmbH
Ablauf http-Anfragen
Client sendet Anfragen
an einen / mehrere
Proxies ...
... welche diese nach Regeln
● selbst beantworten
● weiterleiten
● bearbeiten
● zwischenspeichern
Eine http-Anfrage per Proxy
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 6 / 25© SpeedPartner GmbH
Arten von Web-Proxies
Web-Proxy in Client-Nähe bzw. „im Netz“:
● Zwischenspeicherung (Cache)
● Authentifizierung
● Filterung
● Zugriffssteuerung
● „Werbefilter“
● Virenscanning
● SSL-Terminierung:
Ermöglichen von Prüfung verschlüsselter
Inhalte
Web-Proxy in Server-Nähe:
● Zwischenspeicherung (Cache)
● Entlastung Server
● Client-Verbindungen (z.B. Keepalives)
● Selbständige Bearbeitung von
Anfragen aus dem Cache
● Vermeidung gleichartiger paralleler
Anfragen an die Webserver
● Verteilung über mehrere Server
● Round-Robin, Random, ...
● In Abhängigkeit von Anfragen
(URL, Cookies, Client-IP, ...)
● Bearbeitung der Anfragen
● Bearbeitung der Antworten
● z.B. Edge-Side-Includes
● SSL-Terminierung
z.B. Squid („leistungsstarker Klassiker“) z.B. Varnish (optimiert als Reverseproxy)
Nicht als direkter
Teil von Varnish!
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 7 / 25© SpeedPartner GmbH
Varnish als Reverse-Proxy
Stärken von Varnish:
● Konzeptioniert als Reverseproxy
● Optimiert auf Durchsatz / Last
● Minimalistischer, fokusierter Funktionsumfang
● Flexible Konfiguration / komplexe Regelwerke möglich
● Aktive, selektive Cache-Leerung durch Applikationen möglich
● Erlaubt bei Änderungen Erneuerung bestimmter Inhalte
anhand URLs, Header-Zeilen, ...
● Zusammenstellen von Antworten aus Teilen
(Edge-Side-Includes [ESI])
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 8 / 25© SpeedPartner GmbH
Konfiguration / Regeln
Konfiguration per Varnish Configuration Language (VCL):
● Regelbasierte Bearbeitung von Anfragen
● Domain-spezifische Sprache statt reiner „Konfiguration“
● Interne Übersetzung in Binärcode für optimierte Bearbeitung von Anfragen
● Arbeit mit Objekten und deren Eigenschaften:
● Anfrage, Antwort, Cache-Objekt
● Zeilenweise Ausführung von Bedingungen / Zuweisungen
● Aufgeteilt in Subroutinen für die verschiedenen Phasen einer Bearbeitung
● Standard-Logik je Subroutine, falls nicht anders definiert oder
falls kein Rücksprung vor Ende der Subroutine erfolgt
backend default {
.host = "127.0.0.1";
.port = "8080";
}
Minimales Konfigurationsbeispiel:
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 9 / 25© SpeedPartner GmbH
Konfiguration / Regeln
Basis-Verlauf einer Anfrage in VCL:
Anfrage
Eingang
Anfrage
fertig
vcl_recv vcl_pass vcl_fetch vcl_deliver
vcl_hit
vcl_miss
vcl_pipe
pass
pipe
vcl_hash
lookup
miss
hit
vcl_error
Restart Error
fetch
pass deliver
deliver
= häufig verwendet
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 10 / 25© SpeedPartner GmbH
Konfigurationsbeispiele aus der Praxis
Unterschiedliche Backends je Inhalt + nicht cachebare Inhalte:
● Backends definieren und Regeln für Anfrage / Antwort auswerten
backend default {
.host = "127.0.0.1";
.port = "82";
}
backend static {
.host = "127.0.0.1";
.port = "81";
}
sub vcl_recv {
if (req.http.host == "dev.example.com") {
set req.backend = default;
return (pass);
}
if (req.url ~ "^/[^?]+.(jpeg|jpg|png|gif|js|css)$") {
set req.backend = static;
} else {
set req.backend = default;
}
}
sub vcl_fetch {
if (req.http.host == "dev.example.com") {
set obj.cacheable = false;
return (pass);
}
... weitere Bedingungen ...
if (!obj.cacheable) {
set obj.http.X-Cacheable = "not cacheable";
return (pass);
} else {
set obj.http.X-Cacheable = "yes";
return (deliver);
}
}
vcl_recv = direkt nach Eingang der Anfrage
vcl_fetch = nach Abholen eines Inhalts vom
Backend (nicht gecached)
req = Request-Objekt (Anfrage)
obj = Cache-Objekt (Inhalt)
Dev hier bewusst
nicht gecached
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 11 / 25© SpeedPartner GmbH
Konfigurationsbeispiele aus der Praxis
Anfragen „bereinigen“:
● Nicht cache-relevante Teile einer Anfrage entfernen (1/2)
sub vcl_recv {
# Google Analytics Cookies entfernen
set req.http.cookie = regsub(req.http.cookie,"__utma=[^;]*;?( |$)","");
set req.http.cookie = regsub(req.http.cookie,"__utmb=[^;]*;?( |$)","");
set req.http.cookie = regsub(req.http.cookie,"__utmc=[^;]*;?( |$)","");
set req.http.cookie = regsub(req.http.cookie,"__utmz=[^;]*;?( |$)","");
# alternativ: alle Cookies ausser zwei ...
set req.http.Cookie = ";" req.http.Cookie;
set req.http.Cookie = regsuball(req.http.Cookie, "; +", ";");
set req.http.Cookie = regsuball(req.http.Cookie, ";(PHPSESSID|fe_typo_user)=", "; 1=");
set req.http.Cookie = regsuball(req.http.Cookie, ";[^ ][^;]*", "");
set req.http.Cookie = regsuball(req.http.Cookie, "^[; ]+|[; ]+$", "");
... weitere Regeln ...
# Remove the cookie header if it's empty after cleanup
if (req.http.cookie ~ "^ *$") {
remove req.http.cookie;
}
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 12 / 25© SpeedPartner GmbH
Konfigurationsbeispiele aus der Praxis
Anfragen „bereinigen“:
● Nicht cache-relevante Teile einer Anfrage entfernen (2/2)
# Remove cookies and query string for real static files
if (req.url ~ "^/[^?]+.(jpeg|jpg|png|gif|ico|js|css|txt|gz|zip|lzma|bz2|tgz|tbz|swf|f4v)(?.*|)$")
{
remove req.http.cookie;
set req.url = regsub(req.url, "?.*$", "");
}
# Normalize Content-Encoding
if (req.http.Accept-Encoding)
{
if (req.url ~ ".(jpg|png|gif|gz|tgz|bz2|lzma|tbz)(?.*|)$") {
remove req.http.Accept-Encoding;
} elsif (req.http.Accept-Encoding ~ "gzip") {
set req.http.Accept-Encoding = "gzip";
} elsif (req.http.Accept-Encoding ~ "deflate") {
set req.http.Accept-Encoding = "deflate";
} else {
remove req.http.Accept-Encoding;
}
}
}
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 13 / 25© SpeedPartner GmbH
Konfigurationsbeispiele aus der Praxis
Cache-Zeiten in Varnish abweichend von Angaben für Client setzen:
sub vcl_fetch {
if (beresp.cacheable) {
/* Expires (absolute Zeitangabe) entfernen */
unset beresp.http.expires;
/* Stattdessen relative Gültigkeit setzen */
set beresp.http.cache-control = "max-age=900";
/* Haltezeit in Varnish */
set beresp.ttl = 1w;
/* Marker für Verarbeitung in vcl_deliver */
set beresp.http.magicmarker = "1";
}
}
sub vcl_deliver {
if (resp.http.magicmarker) {
/* Marker entfernen */
unset resp.http.magicmarker;
/* Bei Abruf durch den Client ist das Objekt immer „frisch“ */
set resp.http.age = "0";
}
}
Quelle: https://www.varnish-cache.org/trac/wiki/VCLExampleLongerCaching
Objekt vom Backend geholt;
zur Ablage im Cache
beresp = Backend-Response
Objekt zur Auslieferung;
vom Backend oder
aus dem Cache
resp = Response zum Client
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 14 / 25© SpeedPartner GmbH
Konfigurationsbeispiele aus der Praxis
Selektive Cache-Löschung:
● Möglichkeit 1: per Varnish-Admin-Port
● z.B. mittels Hilfsmittel „varnishadm“
● Authentifizierung über einen „shared secret“
● Verwendet eine TCP-Klartext-Verbindung für die Kommandos (zzgl. Authentifizierung)
# einzelne Seite
varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.url ^/kontakt.htm$
# ganzes Verzeichnis und nur bestimmer Hostname
varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret "ban req.url ~ ^/somedirectory/ &&
req.http.host == www.example.com“
Varnish 2.x: purge
Varnish 3.x: ban
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 15 / 25© SpeedPartner GmbH
Konfigurationsbeispiele aus der Praxis
Selektive Cache-Löschung:
● Möglichkeit 2: Verwendung von http-Headerzeilen in Antworten sowie VCL
● Verwendung für Tagging von Seiten
● Verwendung für tag-basierte Cache-Löschung durch http-Antwort und etwas VCL
<?php
header('x-invalidated-by: tag-a,tag-b', false);
header('cache-control: s-maxage=86400');
// ... reguläre Ausgaben ...
<?php
header('x-invalidates: tag-a', false);
// ... reguläre Ausgaben ...
sub vcl_fetch {
if (beresp.status >= 200 && beresp.status < 400
&& (req.request == "PUT" || req.request == "POST" ||
req.request == "DELETE")) {
ban("obj.http.x-invalidated-by ~ " + beresp.http.x-invalidates);
}
}
Tags setzen
In Antwort Cache-
Lösung triggern,
z.B. per Formular
mit POST
VCL
In Anlehnung an: http://blog.kevburnsjr.com/tagged-cache-invalidation
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 16 / 25© SpeedPartner GmbH
Anfrage mit selbst
gewähltem Typ an
varnish schicken
Konfigurationsbeispiele aus der Praxis
Selektive Cache-Löschung:
● Möglichkeit 3: Verwendung von http-Requests sowie VCL
...
acl purge_acl {
"localhost";
"192.168.1.1";
}
sub vcl_recv {
if(req.request == "PURGE") {
if(!client.ip ~ purge_acl) {
error 405 "Not allowed";
} else {
ban_url(req.url);
error 200 "Purged";
}
}
}
<?php
$curl = curl_init("http://www.example.com/pageToPurge");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PURGE");
curl_exec($curl);
PURGE nur von
bestimmten Clients
zulassen
Request-Typ
beliebig, jedoch ist
PURGE „üblich“
Angefragte URL
clearen. Evtl. auch
Hostname,
Wildcards oder
zusätzliche Header
berücksichtigen
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 17 / 25© SpeedPartner GmbH
Monitoring, Logging, Statistiken
Varnish-Logdaten:
● Logging erfolgt in einen shared-memory-Bereich
● Zugriff per Tool „varnishlog“
● Daemon-Betrieb möglich, welcher dann binäre Logdateien zur späteren Auswertung schreibt
● Logdaten für Kommunikation varnish mit Backend und / oder Client
● Durch shared-memory auch zeitgleicher Zugriff mehrerer Tools auf Livedaten möglich
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 18 / 25© SpeedPartner GmbH
Monitoring, Logging, Statistiken
Varnish-Boardmittel für Logging und Statistiken: (1/2)
● varnishlog
● Anzeige oder binäres Logging
● für alle Anfrage- und Antwort-Header
● zu Backend und / oder Client
● Varnishncsa
● Logging in NCSA-/Apache-kompatiblem Text-Format
● Kann z.B. für klassische Besucherstatistik-
Werkzeuge o.ä. Verwendet werden
● varnishtop
● Auswertung Headerdaten nach Häufigkeit
(häufigste URLs, Anfragetypen,
Client- oder Backend-Merkmale, ...)
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 19 / 25© SpeedPartner GmbH
Monitoring, Logging, Statistiken
Varnish-Boardmittel für Logging und Statistiken: (2/2)
● varnishhist
● Histogram-Darstellung
● Verteilung Anfragen (Y-Achse)
nach Antwortzeit (X-Achse, logarithmisch)
● Pipe-Symbol: gecachte Anfrage,
Raute: Backend-Anfrage
● varnishstat
● Statistische Auswertung verschiedener Kriterien,
insb. Auch Cache-Hit-Ratio
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 20 / 25© SpeedPartner GmbH
Edge-Side-Includes (ESI)
Einbindung von Blöcken:
● Cachen von Antworten mit speziellen ESI-Tags
● separat cachebar
● Auswertung von Einbindungs-Anweisungen
durch varnish
● Client erhält Antwort inkl. Ersetzungen
● Ersetzungen müssen in Varnish aktiviert werden (per VCL)
<esi:include src="/?id=51&type=978&
key=INT_SCRIPT.e6e3f4bc683c3ff8f57f2f46ab
8f9a80&identifier=87b909c18277ab58a6006d2b
7d96e5df&from_varnish=1" />
sub vcl_fetch {
#Respect force-reload
if (req.http.Cache-Control ~ "no-cache") {
set beresp.ttl = 0s;
#Make sure ESI includes are processed!
set beresp.do_esi = true;
return (deliver);
}
//Force cache for 5 seconds for ESI responses
if (beresp.http.X-ESI-RESPONSE) {
set beresp.ttl = 0s;
} else {
set beresp.ttl = 24h;
}
return (deliver);
}varnish 2.1: esi;
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 21 / 25© SpeedPartner GmbH
TYPO3: Cache-Löschung bei Änderungen
TYPO3-Extension „MOC Varnish“:
● Rüstet varnish-Unterstützung mit einfachen Mitteln nach
● automatischen PURGE-Requests bei Änderungen
→ Änderungen trotz langer Cache-Haltezeiten
zeitnah sichtbar
● automatische Umwandlung von USER_INT-Objekten
(per Definition nicht cachebar) in ESI-Statements
→ Cachung umgebender Seiten
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 22 / 25© SpeedPartner GmbH
TYPO3: Cache-Löschung bei Änderungen
TYPO3-Extension „MOC Varnish“:
● automatischen PURGE-Requests bei Änderungen
● Bei Änderung an Inhalt Cache der Seite erneuern
● Bei Änderung an Seite wegen Navigation Aktualisierung
dieser und anderer Seiten
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 23 / 25© SpeedPartner GmbH
Fazit
● Vielfältige Möglichkeiten
● Komplexes Regelwerk möglich
● Logs beobachten!
● Effektiv gecached?
● Nur gewünschte Inhalte gecached?
(Cache-relevante Merkmale, ...)
● Zusammenarbeit mit / Einfluss auf zu cachende Applikationen vorteilhaft
● Tipp: In Snippets / Erfahrungen anderer „Inspiration“ suchen
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 24 / 25© SpeedPartner GmbH
Links / Hilfen
● Migration Varnish 2.1 auf 3.0 (Syntax-Änderungen)
https://www.varnish-cache.org/docs/3.0/installation/upgrade.html
● VCL-Beispiele / Snippets
https://www.varnish-cache.org/trac/wiki/VCLExamples
● TYPO3-Extension für Varnish-Anbindung
http://typo3.org/extensions/repository/view/moc_varnish
Web-Performance-Optimierung mit varnish
GUUG Frühjahrsfachgespräch, 01.03.2013
Seite: 25 / 25© SpeedPartner GmbH
Kontakt
Danke fürs Zuhören
sowie
viel Erfolg und Spaß
„auf der Überholspur“ :-)
Link zu den Slides: http://talks.speedpartner.de/
Bei Fragen stehen wir selbstverständlich gerne zur Verfügung:
Stefan Neufeind, neufeind@speedpartner.de
SpeedPartner GmbH, http://www.speedpartner.de/

Weitere ähnliche Inhalte

Andere mochten auch

Economia espaðola 0
Economia espaðola 0Economia espaðola 0
Economia espaðola 0locki19
 
Historia de la Computación
Historia de la Computación Historia de la Computación
Historia de la Computación leopt
 
presentacion
presentacionpresentacion
presentacionLE PD
 
Software para la recogida de datos de ensayos clínicos. Soluciones Biocapax.
Software para la recogida de datos de ensayos clínicos.  Soluciones Biocapax.Software para la recogida de datos de ensayos clínicos.  Soluciones Biocapax.
Software para la recogida de datos de ensayos clínicos. Soluciones Biocapax.Biocapax
 
ALVARADO BURGOS IVAN
ALVARADO BURGOS IVANALVARADO BURGOS IVAN
ALVARADO BURGOS IVANIvan Alvarado
 
Presentación1.pptx chivis
Presentación1.pptx chivisPresentación1.pptx chivis
Presentación1.pptx chivischiviis
 
¿Cómo mejorar formación TIC en un centro de Educación Primaria?
¿Cómo mejorar formación TIC en un centro de Educación Primaria?¿Cómo mejorar formación TIC en un centro de Educación Primaria?
¿Cómo mejorar formación TIC en un centro de Educación Primaria?rpeon
 
Report Klimaschutz: wirkungsvolle Ansätze und Projekte der Zivilgesellschaft
Report Klimaschutz: wirkungsvolle Ansätze und Projekte der ZivilgesellschaftReport Klimaschutz: wirkungsvolle Ansätze und Projekte der Zivilgesellschaft
Report Klimaschutz: wirkungsvolle Ansätze und Projekte der ZivilgesellschaftPHINEO gemeinnützige AG
 
Seminario 4 encerado dx enfilamiento dentario
Seminario 4   encerado dx enfilamiento dentarioSeminario 4   encerado dx enfilamiento dentario
Seminario 4 encerado dx enfilamiento dentarioSebastián Meneses
 
Dia de la castañera
Dia de la castañeraDia de la castañera
Dia de la castañeracraestercuel
 
El fenómeno comunicativo i
El fenómeno comunicativo iEl fenómeno comunicativo i
El fenómeno comunicativo iLucy Zepeda
 
Colegio de bachilleres
Colegio de bachilleresColegio de bachilleres
Colegio de bachillereshugo isidro
 
Empezemos a jugar tu juego solo que diferente [autoguardado]
Empezemos a jugar tu juego solo que diferente [autoguardado]Empezemos a jugar tu juego solo que diferente [autoguardado]
Empezemos a jugar tu juego solo que diferente [autoguardado]luz1210
 
La violencia escolar
La violencia  escolar La violencia  escolar
La violencia escolar karensoc
 
Diapositiva del proyecto de gestion tecnològico y educativo
Diapositiva del proyecto de gestion tecnològico y educativoDiapositiva del proyecto de gestion tecnològico y educativo
Diapositiva del proyecto de gestion tecnològico y educativohugobuelvas
 
Seguridad en las_redes_sociales
Seguridad en las_redes_socialesSeguridad en las_redes_sociales
Seguridad en las_redes_socialesEdgar0622
 
Para mejorar la narración en la Web
Para mejorar la narración en la WebPara mejorar la narración en la Web
Para mejorar la narración en la Webperlatoro
 

Andere mochten auch (20)

Economia espaðola 0
Economia espaðola 0Economia espaðola 0
Economia espaðola 0
 
Historia de la Computación
Historia de la Computación Historia de la Computación
Historia de la Computación
 
presentacion
presentacionpresentacion
presentacion
 
Software para la recogida de datos de ensayos clínicos. Soluciones Biocapax.
Software para la recogida de datos de ensayos clínicos.  Soluciones Biocapax.Software para la recogida de datos de ensayos clínicos.  Soluciones Biocapax.
Software para la recogida de datos de ensayos clínicos. Soluciones Biocapax.
 
ALVARADO BURGOS IVAN
ALVARADO BURGOS IVANALVARADO BURGOS IVAN
ALVARADO BURGOS IVAN
 
Presentación1.pptx chivis
Presentación1.pptx chivisPresentación1.pptx chivis
Presentación1.pptx chivis
 
¿Cómo mejorar formación TIC en un centro de Educación Primaria?
¿Cómo mejorar formación TIC en un centro de Educación Primaria?¿Cómo mejorar formación TIC en un centro de Educación Primaria?
¿Cómo mejorar formación TIC en un centro de Educación Primaria?
 
Report Klimaschutz: wirkungsvolle Ansätze und Projekte der Zivilgesellschaft
Report Klimaschutz: wirkungsvolle Ansätze und Projekte der ZivilgesellschaftReport Klimaschutz: wirkungsvolle Ansätze und Projekte der Zivilgesellschaft
Report Klimaschutz: wirkungsvolle Ansätze und Projekte der Zivilgesellschaft
 
luxcon2015
luxcon2015luxcon2015
luxcon2015
 
Aduanas
AduanasAduanas
Aduanas
 
Kwdbgjneikudg6jo5r
Kwdbgjneikudg6jo5rKwdbgjneikudg6jo5r
Kwdbgjneikudg6jo5r
 
Seminario 4 encerado dx enfilamiento dentario
Seminario 4   encerado dx enfilamiento dentarioSeminario 4   encerado dx enfilamiento dentario
Seminario 4 encerado dx enfilamiento dentario
 
Dia de la castañera
Dia de la castañeraDia de la castañera
Dia de la castañera
 
El fenómeno comunicativo i
El fenómeno comunicativo iEl fenómeno comunicativo i
El fenómeno comunicativo i
 
Colegio de bachilleres
Colegio de bachilleresColegio de bachilleres
Colegio de bachilleres
 
Empezemos a jugar tu juego solo que diferente [autoguardado]
Empezemos a jugar tu juego solo que diferente [autoguardado]Empezemos a jugar tu juego solo que diferente [autoguardado]
Empezemos a jugar tu juego solo que diferente [autoguardado]
 
La violencia escolar
La violencia  escolar La violencia  escolar
La violencia escolar
 
Diapositiva del proyecto de gestion tecnològico y educativo
Diapositiva del proyecto de gestion tecnològico y educativoDiapositiva del proyecto de gestion tecnològico y educativo
Diapositiva del proyecto de gestion tecnològico y educativo
 
Seguridad en las_redes_sociales
Seguridad en las_redes_socialesSeguridad en las_redes_sociales
Seguridad en las_redes_sociales
 
Para mejorar la narración en la Web
Para mejorar la narración en la WebPara mejorar la narración en la Web
Para mejorar la narración en la Web
 

Ähnlich wie Web-Performance-Optimierung mit varnish

SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEARCH ONE
 
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im EinsatzOpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im EinsatzDigicomp Academy AG
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Deployment mit Webistrano
Deployment mit WebistranoDeployment mit Webistrano
Deployment mit Webistranodaniel.mattes
 
Campixx 2012-ladezeit-extreme
Campixx 2012-ladezeit-extremeCampixx 2012-ladezeit-extreme
Campixx 2012-ladezeit-extremeAlexander Merkel
 
High performance mit PHP
High performance mit PHPHigh performance mit PHP
High performance mit PHPThomas Burgard
 
Wordpress on steroids
Wordpress on steroidsWordpress on steroids
Wordpress on steroidsBlogwerk AG
 
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenDBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenGunther Pippèrr
 
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaOracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaPeter Ramm
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Florian Holzhauer
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Jürg Stuker
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdAOE
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthGerhard Lausser
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenICS User Group
 

Ähnlich wie Web-Performance-Optimierung mit varnish (20)

SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im EinsatzOpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Nginx
NginxNginx
Nginx
 
Typo3 und Varnish
Typo3 und VarnishTypo3 und Varnish
Typo3 und Varnish
 
Deployment mit Webistrano
Deployment mit WebistranoDeployment mit Webistrano
Deployment mit Webistrano
 
Campixx 2012-ladezeit-extreme
Campixx 2012-ladezeit-extremeCampixx 2012-ladezeit-extreme
Campixx 2012-ladezeit-extreme
 
High performance mit PHP
High performance mit PHPHigh performance mit PHP
High performance mit PHP
 
Wordpress on steroids
Wordpress on steroidsWordpress on steroids
Wordpress on steroids
 
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenDBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
 
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaOracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012
 
JavaScript Performance
JavaScript PerformanceJavaScript Performance
JavaScript Performance
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_health
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
 

Mehr von SpeedPartner GmbH

Extbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobierenExtbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobierenSpeedPartner GmbH
 
Professional reports with SVG
Professional reports with SVGProfessional reports with SVG
Professional reports with SVGSpeedPartner GmbH
 
XUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the webXUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the webSpeedPartner GmbH
 
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenWebsockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenSpeedPartner GmbH
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-Domain.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-DomainSpeedPartner GmbH
 
Leben und Arbeiten in einer Community
Leben und Arbeiten in einer CommunityLeben und Arbeiten in einer Community
Leben und Arbeiten in einer CommunitySpeedPartner GmbH
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSpeedPartner GmbH
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSpeedPartner GmbH
 
Deploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerationsDeploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerationsSpeedPartner GmbH
 
Explanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator CertificationExplanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator CertificationSpeedPartner GmbH
 

Mehr von SpeedPartner GmbH (19)

Extbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobierenExtbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobieren
 
Professional reports with SVG
Professional reports with SVGProfessional reports with SVG
Professional reports with SVG
 
Secure PHP environment
Secure PHP environmentSecure PHP environment
Secure PHP environment
 
XUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the webXUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the web
 
PHP-Applikationen mit PEAR
PHP-Applikationen mit PEARPHP-Applikationen mit PEAR
PHP-Applikationen mit PEAR
 
PHP-Entwicklung mit PEAR
PHP-Entwicklung mit PEARPHP-Entwicklung mit PEAR
PHP-Entwicklung mit PEAR
 
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenWebsockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 
News from PEAR
News from PEARNews from PEAR
News from PEAR
 
PEAR - An introduction
PEAR - An introductionPEAR - An introduction
PEAR - An introduction
 
Suchmaschinen-Optimierung
Suchmaschinen-OptimierungSuchmaschinen-Optimierung
Suchmaschinen-Optimierung
 
.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-Domain.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-Domain
 
Leben und Arbeiten in einer Community
Leben und Arbeiten in einer CommunityLeben und Arbeiten in einer Community
Leben und Arbeiten in einer Community
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
 
Deploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerationsDeploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerations
 
Explanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator CertificationExplanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator Certification
 

Web-Performance-Optimierung mit varnish

  • 1. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 1 / 25© SpeedPartner GmbH Web-Performance- Optimierung mit varnish
  • 2. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 2 / 25© SpeedPartner GmbH Über den Vortrag Aufbau / Ziele: ● Einführung / Überblick ● Varnish-Tools (Administration, Logging und Statistik) ● Konfigurationssprache ● Konfigurationsbeispiele aus der Praxis ● Edge-Side-Includes ● TYPO3: Automatische Löschung Varnish-Cache bei Änderungen ● Links / Hilfen
  • 3. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 3 / 25© SpeedPartner GmbH Über mich ● Stefan Neufeind ● Mit-Geschäftsführer der SpeedPartner GmbH aus Neuss ein Internet-Service-Provider (ISP) ● Individuelle TYPO3-Entwicklungen ● Hosting, Housing, Managed Services ● Domains / Domain-Services ● IPv6, DNSSEC, ... ● Aktive Mitarbeit im Community-Umfeld (PHP/PEAR, TYPO3, Linux) ● Freier Autor für z.B. t3n, iX, video2brain, ...
  • 4. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 4 / 25© SpeedPartner GmbH Ablauf http-Anfragen Klassischer Fall für eine direkte http-Anfrage Client sendet Anfragen an einen/mehrere Server ... ... welche diese individuell (!) bearbeiten und beantworten
  • 5. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 5 / 25© SpeedPartner GmbH Ablauf http-Anfragen Client sendet Anfragen an einen / mehrere Proxies ... ... welche diese nach Regeln ● selbst beantworten ● weiterleiten ● bearbeiten ● zwischenspeichern Eine http-Anfrage per Proxy
  • 6. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 6 / 25© SpeedPartner GmbH Arten von Web-Proxies Web-Proxy in Client-Nähe bzw. „im Netz“: ● Zwischenspeicherung (Cache) ● Authentifizierung ● Filterung ● Zugriffssteuerung ● „Werbefilter“ ● Virenscanning ● SSL-Terminierung: Ermöglichen von Prüfung verschlüsselter Inhalte Web-Proxy in Server-Nähe: ● Zwischenspeicherung (Cache) ● Entlastung Server ● Client-Verbindungen (z.B. Keepalives) ● Selbständige Bearbeitung von Anfragen aus dem Cache ● Vermeidung gleichartiger paralleler Anfragen an die Webserver ● Verteilung über mehrere Server ● Round-Robin, Random, ... ● In Abhängigkeit von Anfragen (URL, Cookies, Client-IP, ...) ● Bearbeitung der Anfragen ● Bearbeitung der Antworten ● z.B. Edge-Side-Includes ● SSL-Terminierung z.B. Squid („leistungsstarker Klassiker“) z.B. Varnish (optimiert als Reverseproxy) Nicht als direkter Teil von Varnish!
  • 7. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 7 / 25© SpeedPartner GmbH Varnish als Reverse-Proxy Stärken von Varnish: ● Konzeptioniert als Reverseproxy ● Optimiert auf Durchsatz / Last ● Minimalistischer, fokusierter Funktionsumfang ● Flexible Konfiguration / komplexe Regelwerke möglich ● Aktive, selektive Cache-Leerung durch Applikationen möglich ● Erlaubt bei Änderungen Erneuerung bestimmter Inhalte anhand URLs, Header-Zeilen, ... ● Zusammenstellen von Antworten aus Teilen (Edge-Side-Includes [ESI])
  • 8. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 8 / 25© SpeedPartner GmbH Konfiguration / Regeln Konfiguration per Varnish Configuration Language (VCL): ● Regelbasierte Bearbeitung von Anfragen ● Domain-spezifische Sprache statt reiner „Konfiguration“ ● Interne Übersetzung in Binärcode für optimierte Bearbeitung von Anfragen ● Arbeit mit Objekten und deren Eigenschaften: ● Anfrage, Antwort, Cache-Objekt ● Zeilenweise Ausführung von Bedingungen / Zuweisungen ● Aufgeteilt in Subroutinen für die verschiedenen Phasen einer Bearbeitung ● Standard-Logik je Subroutine, falls nicht anders definiert oder falls kein Rücksprung vor Ende der Subroutine erfolgt backend default { .host = "127.0.0.1"; .port = "8080"; } Minimales Konfigurationsbeispiel:
  • 9. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 9 / 25© SpeedPartner GmbH Konfiguration / Regeln Basis-Verlauf einer Anfrage in VCL: Anfrage Eingang Anfrage fertig vcl_recv vcl_pass vcl_fetch vcl_deliver vcl_hit vcl_miss vcl_pipe pass pipe vcl_hash lookup miss hit vcl_error Restart Error fetch pass deliver deliver = häufig verwendet
  • 10. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 10 / 25© SpeedPartner GmbH Konfigurationsbeispiele aus der Praxis Unterschiedliche Backends je Inhalt + nicht cachebare Inhalte: ● Backends definieren und Regeln für Anfrage / Antwort auswerten backend default { .host = "127.0.0.1"; .port = "82"; } backend static { .host = "127.0.0.1"; .port = "81"; } sub vcl_recv { if (req.http.host == "dev.example.com") { set req.backend = default; return (pass); } if (req.url ~ "^/[^?]+.(jpeg|jpg|png|gif|js|css)$") { set req.backend = static; } else { set req.backend = default; } } sub vcl_fetch { if (req.http.host == "dev.example.com") { set obj.cacheable = false; return (pass); } ... weitere Bedingungen ... if (!obj.cacheable) { set obj.http.X-Cacheable = "not cacheable"; return (pass); } else { set obj.http.X-Cacheable = "yes"; return (deliver); } } vcl_recv = direkt nach Eingang der Anfrage vcl_fetch = nach Abholen eines Inhalts vom Backend (nicht gecached) req = Request-Objekt (Anfrage) obj = Cache-Objekt (Inhalt) Dev hier bewusst nicht gecached
  • 11. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 11 / 25© SpeedPartner GmbH Konfigurationsbeispiele aus der Praxis Anfragen „bereinigen“: ● Nicht cache-relevante Teile einer Anfrage entfernen (1/2) sub vcl_recv { # Google Analytics Cookies entfernen set req.http.cookie = regsub(req.http.cookie,"__utma=[^;]*;?( |$)",""); set req.http.cookie = regsub(req.http.cookie,"__utmb=[^;]*;?( |$)",""); set req.http.cookie = regsub(req.http.cookie,"__utmc=[^;]*;?( |$)",""); set req.http.cookie = regsub(req.http.cookie,"__utmz=[^;]*;?( |$)",""); # alternativ: alle Cookies ausser zwei ... set req.http.Cookie = ";" req.http.Cookie; set req.http.Cookie = regsuball(req.http.Cookie, "; +", ";"); set req.http.Cookie = regsuball(req.http.Cookie, ";(PHPSESSID|fe_typo_user)=", "; 1="); set req.http.Cookie = regsuball(req.http.Cookie, ";[^ ][^;]*", ""); set req.http.Cookie = regsuball(req.http.Cookie, "^[; ]+|[; ]+$", ""); ... weitere Regeln ... # Remove the cookie header if it's empty after cleanup if (req.http.cookie ~ "^ *$") { remove req.http.cookie; }
  • 12. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 12 / 25© SpeedPartner GmbH Konfigurationsbeispiele aus der Praxis Anfragen „bereinigen“: ● Nicht cache-relevante Teile einer Anfrage entfernen (2/2) # Remove cookies and query string for real static files if (req.url ~ "^/[^?]+.(jpeg|jpg|png|gif|ico|js|css|txt|gz|zip|lzma|bz2|tgz|tbz|swf|f4v)(?.*|)$") { remove req.http.cookie; set req.url = regsub(req.url, "?.*$", ""); } # Normalize Content-Encoding if (req.http.Accept-Encoding) { if (req.url ~ ".(jpg|png|gif|gz|tgz|bz2|lzma|tbz)(?.*|)$") { remove req.http.Accept-Encoding; } elsif (req.http.Accept-Encoding ~ "gzip") { set req.http.Accept-Encoding = "gzip"; } elsif (req.http.Accept-Encoding ~ "deflate") { set req.http.Accept-Encoding = "deflate"; } else { remove req.http.Accept-Encoding; } } }
  • 13. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 13 / 25© SpeedPartner GmbH Konfigurationsbeispiele aus der Praxis Cache-Zeiten in Varnish abweichend von Angaben für Client setzen: sub vcl_fetch { if (beresp.cacheable) { /* Expires (absolute Zeitangabe) entfernen */ unset beresp.http.expires; /* Stattdessen relative Gültigkeit setzen */ set beresp.http.cache-control = "max-age=900"; /* Haltezeit in Varnish */ set beresp.ttl = 1w; /* Marker für Verarbeitung in vcl_deliver */ set beresp.http.magicmarker = "1"; } } sub vcl_deliver { if (resp.http.magicmarker) { /* Marker entfernen */ unset resp.http.magicmarker; /* Bei Abruf durch den Client ist das Objekt immer „frisch“ */ set resp.http.age = "0"; } } Quelle: https://www.varnish-cache.org/trac/wiki/VCLExampleLongerCaching Objekt vom Backend geholt; zur Ablage im Cache beresp = Backend-Response Objekt zur Auslieferung; vom Backend oder aus dem Cache resp = Response zum Client
  • 14. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 14 / 25© SpeedPartner GmbH Konfigurationsbeispiele aus der Praxis Selektive Cache-Löschung: ● Möglichkeit 1: per Varnish-Admin-Port ● z.B. mittels Hilfsmittel „varnishadm“ ● Authentifizierung über einen „shared secret“ ● Verwendet eine TCP-Klartext-Verbindung für die Kommandos (zzgl. Authentifizierung) # einzelne Seite varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.url ^/kontakt.htm$ # ganzes Verzeichnis und nur bestimmer Hostname varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret "ban req.url ~ ^/somedirectory/ && req.http.host == www.example.com“ Varnish 2.x: purge Varnish 3.x: ban
  • 15. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 15 / 25© SpeedPartner GmbH Konfigurationsbeispiele aus der Praxis Selektive Cache-Löschung: ● Möglichkeit 2: Verwendung von http-Headerzeilen in Antworten sowie VCL ● Verwendung für Tagging von Seiten ● Verwendung für tag-basierte Cache-Löschung durch http-Antwort und etwas VCL <?php header('x-invalidated-by: tag-a,tag-b', false); header('cache-control: s-maxage=86400'); // ... reguläre Ausgaben ... <?php header('x-invalidates: tag-a', false); // ... reguläre Ausgaben ... sub vcl_fetch { if (beresp.status >= 200 && beresp.status < 400 && (req.request == "PUT" || req.request == "POST" || req.request == "DELETE")) { ban("obj.http.x-invalidated-by ~ " + beresp.http.x-invalidates); } } Tags setzen In Antwort Cache- Lösung triggern, z.B. per Formular mit POST VCL In Anlehnung an: http://blog.kevburnsjr.com/tagged-cache-invalidation
  • 16. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 16 / 25© SpeedPartner GmbH Anfrage mit selbst gewähltem Typ an varnish schicken Konfigurationsbeispiele aus der Praxis Selektive Cache-Löschung: ● Möglichkeit 3: Verwendung von http-Requests sowie VCL ... acl purge_acl { "localhost"; "192.168.1.1"; } sub vcl_recv { if(req.request == "PURGE") { if(!client.ip ~ purge_acl) { error 405 "Not allowed"; } else { ban_url(req.url); error 200 "Purged"; } } } <?php $curl = curl_init("http://www.example.com/pageToPurge"); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PURGE"); curl_exec($curl); PURGE nur von bestimmten Clients zulassen Request-Typ beliebig, jedoch ist PURGE „üblich“ Angefragte URL clearen. Evtl. auch Hostname, Wildcards oder zusätzliche Header berücksichtigen
  • 17. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 17 / 25© SpeedPartner GmbH Monitoring, Logging, Statistiken Varnish-Logdaten: ● Logging erfolgt in einen shared-memory-Bereich ● Zugriff per Tool „varnishlog“ ● Daemon-Betrieb möglich, welcher dann binäre Logdateien zur späteren Auswertung schreibt ● Logdaten für Kommunikation varnish mit Backend und / oder Client ● Durch shared-memory auch zeitgleicher Zugriff mehrerer Tools auf Livedaten möglich
  • 18. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 18 / 25© SpeedPartner GmbH Monitoring, Logging, Statistiken Varnish-Boardmittel für Logging und Statistiken: (1/2) ● varnishlog ● Anzeige oder binäres Logging ● für alle Anfrage- und Antwort-Header ● zu Backend und / oder Client ● Varnishncsa ● Logging in NCSA-/Apache-kompatiblem Text-Format ● Kann z.B. für klassische Besucherstatistik- Werkzeuge o.ä. Verwendet werden ● varnishtop ● Auswertung Headerdaten nach Häufigkeit (häufigste URLs, Anfragetypen, Client- oder Backend-Merkmale, ...)
  • 19. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 19 / 25© SpeedPartner GmbH Monitoring, Logging, Statistiken Varnish-Boardmittel für Logging und Statistiken: (2/2) ● varnishhist ● Histogram-Darstellung ● Verteilung Anfragen (Y-Achse) nach Antwortzeit (X-Achse, logarithmisch) ● Pipe-Symbol: gecachte Anfrage, Raute: Backend-Anfrage ● varnishstat ● Statistische Auswertung verschiedener Kriterien, insb. Auch Cache-Hit-Ratio
  • 20. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 20 / 25© SpeedPartner GmbH Edge-Side-Includes (ESI) Einbindung von Blöcken: ● Cachen von Antworten mit speziellen ESI-Tags ● separat cachebar ● Auswertung von Einbindungs-Anweisungen durch varnish ● Client erhält Antwort inkl. Ersetzungen ● Ersetzungen müssen in Varnish aktiviert werden (per VCL) <esi:include src="/?id=51&type=978& key=INT_SCRIPT.e6e3f4bc683c3ff8f57f2f46ab 8f9a80&identifier=87b909c18277ab58a6006d2b 7d96e5df&from_varnish=1" /> sub vcl_fetch { #Respect force-reload if (req.http.Cache-Control ~ "no-cache") { set beresp.ttl = 0s; #Make sure ESI includes are processed! set beresp.do_esi = true; return (deliver); } //Force cache for 5 seconds for ESI responses if (beresp.http.X-ESI-RESPONSE) { set beresp.ttl = 0s; } else { set beresp.ttl = 24h; } return (deliver); }varnish 2.1: esi;
  • 21. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 21 / 25© SpeedPartner GmbH TYPO3: Cache-Löschung bei Änderungen TYPO3-Extension „MOC Varnish“: ● Rüstet varnish-Unterstützung mit einfachen Mitteln nach ● automatischen PURGE-Requests bei Änderungen → Änderungen trotz langer Cache-Haltezeiten zeitnah sichtbar ● automatische Umwandlung von USER_INT-Objekten (per Definition nicht cachebar) in ESI-Statements → Cachung umgebender Seiten
  • 22. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 22 / 25© SpeedPartner GmbH TYPO3: Cache-Löschung bei Änderungen TYPO3-Extension „MOC Varnish“: ● automatischen PURGE-Requests bei Änderungen ● Bei Änderung an Inhalt Cache der Seite erneuern ● Bei Änderung an Seite wegen Navigation Aktualisierung dieser und anderer Seiten
  • 23. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 23 / 25© SpeedPartner GmbH Fazit ● Vielfältige Möglichkeiten ● Komplexes Regelwerk möglich ● Logs beobachten! ● Effektiv gecached? ● Nur gewünschte Inhalte gecached? (Cache-relevante Merkmale, ...) ● Zusammenarbeit mit / Einfluss auf zu cachende Applikationen vorteilhaft ● Tipp: In Snippets / Erfahrungen anderer „Inspiration“ suchen
  • 24. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 24 / 25© SpeedPartner GmbH Links / Hilfen ● Migration Varnish 2.1 auf 3.0 (Syntax-Änderungen) https://www.varnish-cache.org/docs/3.0/installation/upgrade.html ● VCL-Beispiele / Snippets https://www.varnish-cache.org/trac/wiki/VCLExamples ● TYPO3-Extension für Varnish-Anbindung http://typo3.org/extensions/repository/view/moc_varnish
  • 25. Web-Performance-Optimierung mit varnish GUUG Frühjahrsfachgespräch, 01.03.2013 Seite: 25 / 25© SpeedPartner GmbH Kontakt Danke fürs Zuhören sowie viel Erfolg und Spaß „auf der Überholspur“ :-) Link zu den Slides: http://talks.speedpartner.de/ Bei Fragen stehen wir selbstverständlich gerne zur Verfügung: Stefan Neufeind, neufeind@speedpartner.de SpeedPartner GmbH, http://www.speedpartner.de/