SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Web-Performance-Optimierung mit varnish
LinuxTag 2013, 25.05.2013
Seite: 1 / 25© SpeedPartner GmbH
Web-Performance-
Optimierung
mit varnish
Web-Performance-Optimierung mit varnish
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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 (obj.http.X-ESI-RESPONSE) {
set obj.ttl = 0s;
} else {
set obj.ttl = 24h;
}
return (deliver);
}varnish 2.1: esi;
Web-Performance-Optimierung mit varnish
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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
LinuxTag 2013, 25.05.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

Was ist angesagt?

GWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
GWAVACon 2015: SEP - Backuplösungen auf dem PrüfstandGWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
GWAVACon 2015: SEP - Backuplösungen auf dem PrüfstandGWAVA
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascriptdzuvic
 
Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)Martin Kliehm
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
GUUG Hamburg OpenNebula
GUUG Hamburg OpenNebulaGUUG Hamburg OpenNebula
GUUG Hamburg OpenNebulaMartin Alfke
 
MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/RecoveryFromDual GmbH
 

Was ist angesagt? (8)

GWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
GWAVACon 2015: SEP - Backuplösungen auf dem PrüfstandGWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
GWAVACon 2015: SEP - Backuplösungen auf dem Prüfstand
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)
 
MySQL Backup
MySQL BackupMySQL Backup
MySQL Backup
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
GUUG Hamburg OpenNebula
GUUG Hamburg OpenNebulaGUUG Hamburg OpenNebula
GUUG Hamburg OpenNebula
 
MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/Recovery
 

Andere mochten auch

Services Provided by PMI & Pune Chapter
Services Provided by PMI & Pune ChapterServices Provided by PMI & Pune Chapter
Services Provided by PMI & Pune ChapterRahul Sudame
 
Rocker camber
Rocker camberRocker camber
Rocker camberchope1969
 
Lugares e identidades locales
Lugares e identidades localesLugares e identidades locales
Lugares e identidades localesGise Garcia
 
Action Screen Print & Embroidery Holiday Corporate Gifts
Action Screen Print & Embroidery Holiday Corporate GiftsAction Screen Print & Embroidery Holiday Corporate Gifts
Action Screen Print & Embroidery Holiday Corporate GiftsTom Thornton
 
Grails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGrails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGailen Tecnologías
 
Politiedatamining met datadetective
Politiedatamining met datadetectivePolitiedatamining met datadetective
Politiedatamining met datadetectiveFrank Smilda
 
[DE] "Bye-bye management!", Vortrag mit Niels Pfläging beim Marketing-Club Lü...
[DE] "Bye-bye management!", Vortrag mit Niels Pfläging beim Marketing-Club Lü...[DE] "Bye-bye management!", Vortrag mit Niels Pfläging beim Marketing-Club Lü...
[DE] "Bye-bye management!", Vortrag mit Niels Pfläging beim Marketing-Club Lü...Niels Pflaeging
 
Juan manuel 2 trabajo en equipo
Juan manuel 2 trabajo en equipoJuan manuel 2 trabajo en equipo
Juan manuel 2 trabajo en equipoDamaraGlez
 
GreenIT BB Award 2012 - BB Think Tank - Summit
GreenIT BB Award 2012 - BB Think Tank - SummitGreenIT BB Award 2012 - BB Think Tank - Summit
GreenIT BB Award 2012 - BB Think Tank - SummitNetzwerk GreenIT-BB
 
Catalogo Larome perfumes - maisperfumes.com
Catalogo Larome perfumes - maisperfumes.comCatalogo Larome perfumes - maisperfumes.com
Catalogo Larome perfumes - maisperfumes.comMais Perfumes
 
Improving the Unifier User Experience
Improving the Unifier User ExperienceImproving the Unifier User Experience
Improving the Unifier User Experiencep6academy
 
Geoconsult presentation
Geoconsult presentationGeoconsult presentation
Geoconsult presentationInc Group
 

Andere mochten auch (20)

Services Provided by PMI & Pune Chapter
Services Provided by PMI & Pune ChapterServices Provided by PMI & Pune Chapter
Services Provided by PMI & Pune Chapter
 
Event Aarhus 6.5.15 Knud Schulz
Event Aarhus 6.5.15 Knud SchulzEvent Aarhus 6.5.15 Knud Schulz
Event Aarhus 6.5.15 Knud Schulz
 
Empleoandarax3.0
Empleoandarax3.0Empleoandarax3.0
Empleoandarax3.0
 
Rocker camber
Rocker camberRocker camber
Rocker camber
 
Exodo
ExodoExodo
Exodo
 
Lugares e identidades locales
Lugares e identidades localesLugares e identidades locales
Lugares e identidades locales
 
Periodico oficial
Periodico oficialPeriodico oficial
Periodico oficial
 
Diapositivas
DiapositivasDiapositivas
Diapositivas
 
Action Screen Print & Embroidery Holiday Corporate Gifts
Action Screen Print & Embroidery Holiday Corporate GiftsAction Screen Print & Embroidery Holiday Corporate Gifts
Action Screen Print & Embroidery Holiday Corporate Gifts
 
Grails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGrails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacional
 
Listado de hipermercados en rusia
Listado de hipermercados en rusiaListado de hipermercados en rusia
Listado de hipermercados en rusia
 
Politiedatamining met datadetective
Politiedatamining met datadetectivePolitiedatamining met datadetective
Politiedatamining met datadetective
 
[DE] "Bye-bye management!", Vortrag mit Niels Pfläging beim Marketing-Club Lü...
[DE] "Bye-bye management!", Vortrag mit Niels Pfläging beim Marketing-Club Lü...[DE] "Bye-bye management!", Vortrag mit Niels Pfläging beim Marketing-Club Lü...
[DE] "Bye-bye management!", Vortrag mit Niels Pfläging beim Marketing-Club Lü...
 
Photomaths2
Photomaths2Photomaths2
Photomaths2
 
Juan manuel 2 trabajo en equipo
Juan manuel 2 trabajo en equipoJuan manuel 2 trabajo en equipo
Juan manuel 2 trabajo en equipo
 
GreenIT BB Award 2012 - BB Think Tank - Summit
GreenIT BB Award 2012 - BB Think Tank - SummitGreenIT BB Award 2012 - BB Think Tank - Summit
GreenIT BB Award 2012 - BB Think Tank - Summit
 
Revelate
RevelateRevelate
Revelate
 
Catalogo Larome perfumes - maisperfumes.com
Catalogo Larome perfumes - maisperfumes.comCatalogo Larome perfumes - maisperfumes.com
Catalogo Larome perfumes - maisperfumes.com
 
Improving the Unifier User Experience
Improving the Unifier User ExperienceImproving the Unifier User Experience
Improving the Unifier User Experience
 
Geoconsult presentation
Geoconsult presentationGeoconsult presentation
Geoconsult presentation
 

Ä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
 
Deployment mit Webistrano
Deployment mit WebistranoDeployment mit Webistrano
Deployment mit Webistranodaniel.mattes
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
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
 
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
 
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Ulrike Schwinn
 
Monitoring Openstack - LinuxTag 2013
Monitoring Openstack - LinuxTag 2013Monitoring Openstack - LinuxTag 2013
Monitoring Openstack - LinuxTag 2013NETWAYS
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Jürg Stuker
 
HTML5 Storage
HTML5 StorageHTML5 Storage
HTML5 Storageadesso AG
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOpsAndreas Koop
 
Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?GFU Cyrus AG
 
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
 
Nginx
NginxNginx
Nginx
 
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
 
Deployment mit Webistrano
Deployment mit WebistranoDeployment mit Webistrano
Deployment mit Webistrano
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Typo3 und Varnish
Typo3 und VarnishTypo3 und Varnish
Typo3 und Varnish
 
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
 
JavaScript Performance
JavaScript PerformanceJavaScript Performance
JavaScript Performance
 
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
 
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
 
Monitoring Openstack - LinuxTag 2013
Monitoring Openstack - LinuxTag 2013Monitoring Openstack - LinuxTag 2013
Monitoring Openstack - LinuxTag 2013
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
 
HTML5 Storage
HTML5 StorageHTML5 Storage
HTML5 Storage
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
 
Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?
 
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
 
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 (20)

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
 
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 LinuxTag 2013, 25.05.2013 Seite: 1 / 25© SpeedPartner GmbH Web-Performance- Optimierung mit varnish
  • 2. Web-Performance-Optimierung mit varnish LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 (obj.http.X-ESI-RESPONSE) { set obj.ttl = 0s; } else { set obj.ttl = 24h; } return (deliver); }varnish 2.1: esi;
  • 21. Web-Performance-Optimierung mit varnish LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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 LinuxTag 2013, 25.05.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/