verdammt schnell • Open-Source • erprobt und bei vielen schon im Einsatz • die einzige Open-Source Lösung für Edge Side Includes (ESI) Symfony2 unterstütz ESI und damit auch Varnish von Haus aus. Varnish kann aber auch allen anderen Web Applikationen helfen! Varnish ist ...
9.97 Requests per Second (RAM:50% CPU:100%) - Varnish:3003.98 Requests per Second (RAM:50%CPU:5%) Requests: 1.000 - Concurrency: 10 - Apache: 10.60 Requests per Second (RAM:95% CPU:100%) - Varnish: 6391.29 Requests per Second (RAM:50% CPU:10%) Requests:10.000 - Concurrency: 100 - Apache: Absturz - Varnish: 6179.76 Requests per Second (RAM:55% CPU:15%) Quelle: http://www.slideshare.net/papst23/n3rd-4-speed
von teueren Queries ◦ Kann in der Applikation beliebig umher gereicht werden, da es Rohdaten sind. • pre-render Cache ◦ Vorberechnete Werte, meist auf DB oder Webservice Ergebnissen basierend ◦ Kann meistens nur die direkt verbundene Business - Logik nutzen • Output Cache ◦ Fertiges HTML, JSON, XML, etc. ◦ Gut um Last von Servern zu nehmen für Dinge die sich selten ändern oder explizit neu berechnet werden können Cache - Types (Auszug)
Wer oder was sagt an, dass ein Cache invalide ist? • Wann wird der Cache neu befüllt? ◦ Erste Anfrage nach Invalidierung oder ◦ beim Invalidieren oder ◦ durch einen Cronjob? • Wer muss wissen, dass die Daten gecached sind? (Architektur - Frage)
es rein gesteckt hat (Problem von verteilten, konkurrierenden Caches) • Alles was nur irgendwie geht vorberechnen • Aufpassen, ◦ dass das Cache Management nicht die ursprüngliche Ersparnis aufbraucht ◦ dass man auch ohne Cache weiter leben kann. (Ausfallszenarien) Was macht man beim Backend Caching ?
mächtige Document DB ◦ Kann Level 2 sein oder vollständiger Ersatz ◦ Performance abhängig vom Nutzungsszenario Alle aufgelisteten Server können zusammen mit einer bestehenden MySQL verwendet werden, Einige können mehr Logik vertragen als Andere.
• Hash-Wert im HTTP-Header • Problematisch bei mehreren Servern zur Auslieferung von Assets (Inode) • Problematisch bei IIS ◦ Filetimestamp:ChangeNumber • Lösung: Ausschalten ;)
Client entpackt die Daten • Muss vom Client + Server unterstützt werden • Header ◦ Accept-Encoding (Client) ◦ Content-Encoding (Server) • Wunderwaffe? Nein! Einsatz Depends!
sein • Übersetzungstexte für die Browser Locale • Applikationseinstellungen bei Individualisierung • Der Zustand der Seite beim window. onunload • Asset Caching (CSS, JS)