Techtalk Varnish
-
Upload
wonko -
Category
Technology
-
view
1.165 -
download
4
Embed Size (px)
description
Transcript of Techtalk Varnish

Varnish voor webbouwers
Openminds TechTalk6 juli 2011
www.openminds.beManaged hosting solutions
Wednesday 6 July 2011

SOFTWARE
Wednesday 6 July 2011

Varnish
• Noorse tabloid Verdens Gang - 1.0 in 2006 - 3.0 enkele dagen terug
• Snelheidswinst site: 10x - 300x
• caching HTTP reverse proxy
Wednesday 6 July 2011

normaal
ServerClient Internetlijn
Datacentrum
Wednesday 6 July 2011

klassieke proxy
ServerClient Trage InternetlijnProxy
Datacentrum
ClientClient
Wednesday 6 July 2011

reverse proxy
ServerProxySnelle lijnen
Datacentrum
ClientClientClient
Wednesday 6 July 2011

reverse proxy
ServerProxySnelle lijnen
Datacentrum
ClientClientClient ServerServer
Wednesday 6 July 2011

caching reverse proxy
ServerCachingProxy
Datacentrum
ClientClientClient ServerServer
Wednesday 6 July 2011

Waarom?
• Serverbelasting omlaag
• Veel snellere site-ervaring
• Veel meer hits/s afwerken met zelfde hardware
• Ademruimte voor serverhits
Wednesday 6 July 2011

Wednesday 6 July 2011

Caching
• Identieke aanvraag - identiek antwoord
• We houden het volledige antwoord bij
• Headers
• Data (HTML)
Wednesday 6 July 2011

Identieke aanvraagIdentiek antwoord
Wednesday 6 July 2011

Aanvraag
GET / HTTP/1.1Host: www.openminds.beUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en,en-us;q=0.7,nl-be;q=0.3Accept-Encoding: gzip, deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Connection: keep-aliveCookie: __utma=121817557.1268321880.1308719392.1309764385.1309861948.8; __utmz=121817557.1308719392.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _openminds_session=BAh7CToQX2NzcmZfdG9rZW4iMXBqNFJyS1RKRUxqNVpSNXBRb2R4N1RTN25GY1RSaVhKQVZscXR6alBqRU09Og9zZXNzaW9uX2lkIiU3YzEwNjI4YjQ2ODhmMGE4OWE2NTRhYjU2ZmU1NTgxNyIMdXNlcl9pZGkKIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewY6C25vdGljZSIkWW91ciBwYWdlIGhhcyBiZWVuIHNhdmVkIGJlbG93LgY6CkB1c2VkewY7CFQ%3D--f8439d4c16ca7b72afebf9ae05f150700d6ee0e1; __utmc=121817557; __utmb=121817557.2.10.1309861948
Wednesday 6 July 2011

Aanvraag
GET / HTTP/1.1Host: www.openminds.beUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en,en-us;q=0.7,nl-be;q=0.3Accept-Encoding: gzip, deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Connection: keep-aliveCookie: __utma=121817557.1268321880.1308719392.1309764385.1309861948.8; __utmz=121817557.1308719392.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _openminds_session=BAh7CToQX2NzcmZfdG9rZW4iMXBqNFJyS1RKRUxqNVpSNXBRb2R4N1RTN25GY1RSaVhKQVZscXR6alBqRU09Og9zZXNzaW9uX2lkIiU3YzEwNjI4YjQ2ODhmMGE4OWE2NTRhYjU2ZmU1NTgxNyIMdXNlcl9pZGkKIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewY6C25vdGljZSIkWW91ciBwYWdlIGhhcyBiZWVuIHNhdmVkIGJlbG93LgY6CkB1c2VkewY7CFQ%3D--f8439d4c16ca7b72afebf9ae05f150700d6ee0e1; __utmc=121817557; __utmb=121817557.2.10.1309861948
Wednesday 6 July 2011

Aanvraag
• Host
• URI (pad, method/verb, version)
• Cookies
• Encoding / compressie
Wednesday 6 July 2011

AntwoordHTTP/1.1 200 OKServer: nginx/0.5.32Date: Tue, 05 Jul 2011 10:52:36 GMTContent-Type: text/html; charset=utf-8Connection: keep-aliveX-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.15Etag: "25ec477310b3f81f097d5f6f3b5824f6"X-Rack-Cache: stale, invalid, storeX-Content-Digest: af41dfcde5cfeaa55717261890560d56595be969X-Runtime: 2559Cache-Control: max-age=300, publicAge: 21Set-Cookie: _openminds_session=BAh7CToQX2NzcmZfdG9rZW4iMXBqNFJyS1RKRUxqNVpSNXBRb2R4N1RTN25GY1RSaVhKQVZscXR6alBqRU09Og9zZXNzaW9uX2lkIiU3YzEwNjI4YjQ2ODhmMGE4OWE2NTRhYjU2ZmU1NTgxNyIMdXNlcl9pZGkKIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewY6C25vdGljZSIkWW91ciBwYWdlIGhhcyBiZWVuIHNhdmVkIGJlbG93LgY6CkB1c2VkewY7CFQ%3D--f8439d4c16ca7b72afebf9ae05f150700d6ee0e1; path=/; HttpOnlyContent-Length: 11565Status: 200X-server: pro-005X-Proxy: fosfor
Wednesday 6 July 2011

Wat cachen?
• Statische content (images, css, js, ...)
• Hoofdpagina’s / hoofdpaden
• Zoveel mogelijk
• Versie per variatie bijhouden (encoding...)
• GET/HEAD
Wednesday 6 July 2011

Wednesday 6 July 2011

Wat niet cachen
• admin/management secties
• pagina’s die zich aanpassen aan user (logged in, winkelmandje, profielen, ...)
• 404 / 500 / ...
• POST/PUT/DELETE
Wednesday 6 July 2011

Cookies
• Sessie - antwoord niet cachen
• Google - doet er op zich niet toe
• Variaties - antwoord wel cachebaar
Wednesday 6 July 2011

Stel...
• ... dat de webapplicatie dit meegeeft
• browser-cache hints worden gestuurd
• meestal fout
Wednesday 6 July 2011

Cache-ControlHTTP/1.1 200 OKServer: nginx/0.5.32Date: Tue, 05 Jul 2011 10:52:36 GMTContent-Type: text/html; charset=utf-8Connection: keep-aliveX-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.15Etag: "25ec477310b3f81f097d5f6f3b5824f6"X-Rack-Cache: stale, invalid, storeX-Content-Digest: af41dfcde5cfeaa55717261890560d56595be969X-Runtime: 2559Cache-Control: max-age=300, publicAge: 21Set-Cookie: _openminds_session=BAh7CToQX2NzcmZfdG9rZW4iMXBqNFJyS1RKRUxqNVpSNXBRb2R4N1RTN25GY1RSaVhKQVZscXR6alBqRU09Og9zZXNzaW9uX2lkIiU3YzEwNjI4YjQ2ODhmMGE4OWE2NTRhYjU2ZmU1NTgxNyIMdXNlcl9pZGkKIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewY6C25vdGljZSIkWW91ciBwYWdlIGhhcyBiZWVuIHNhdmVkIGJlbG93LgY6CkB1c2VkewY7CFQ%3D--f8439d4c16ca7b72afebf9ae05f150700d6ee0e1; path=/; HttpOnlyContent-Length: 11565Status: 200X-server: pro-005X-Proxy: fosfor
Wednesday 6 July 2011

Cache hints
• max-age - eenvoudig (HTTP 1.1)
• expires - zeer specifiek (HTTP 1.0)
• “pragma: no-cache”
• etags
• ...
Wednesday 6 July 2011

Varnish manipuleert
• Zowel aanvraag als antwoord
• Strippen, herzetten, ... van velden
• Cookies manipuleren
• Cache-timings
Wednesday 6 July 2011

Cache timings
• De duur dat Varnish het zelf bijhoudt (varnish ttl) - bvb 24 uur
• De duur dat een client het mag bijhouden (browser cache) - bvb 2 uur of 30 dagen
Wednesday 6 July 2011

Een voorbeeld
• Gewone, publieke site
• Rails-applicatie met eigen CMS
• Eenvoudige VDS
• 100Mbps
• Eenvoudige varnish config (cache-control was correct)
Wednesday 6 July 2011

Wednesday 6 July 2011

1 second cache
• Pollers
• 100 tot 10000 polls per seconde
• +/- timestamp terugsturen
• zorgt voor 99 tot 9999 minder hits/s
Wednesday 6 July 2011

1 second cache
Wednesday 6 July 2011

Images
• Hard forceren
• Alle cookies strippen
• Hogere cache-control zetten
Wednesday 6 July 2011

Talen
• Taal niet opslaan in sessie
• Taal in cookie opslaan (language=nl)
• Wordt een variatie voor Varnish
• Homepagina voor Nederlands
• Homepagina voor Frans
Wednesday 6 July 2011

Anonieme cookies
• Drupal 6
• Symfony
• CakePHP
• Rails
• ...
Wednesday 6 July 2011

Admin interfaces
• Volledig namespaced (/admin/...)
• Andere url (admin.openminds.be)
• Sessie-cookie verwijderen bij logout
Wednesday 6 July 2011

Logged in users
• Moeilijk!
• Assets op andere hosts/url
• Ajax ?
• Partial caching van Varnish (advanced)
Wednesday 6 July 2011

There are only two hard things in Computer Science: cache invalidation and naming things
— Phil Karlton
Wednesday 6 July 2011

Cache invalidation• Wat bij edit/put/post/...
• eenvoudig: PURGE op juiste URL(s)
• control channel
• Drupal module
• Lacquer gem
• Purged de browser niet !!!
Wednesday 6 July 2011

Webbouwers
• Anonieme cookies nodig?
• Admin sectie duidelijk
• Variaties aantoonbaar (language-cookie bv)
• Cache-control headers zijn belangrijk
• Vooraf over nadenken
Wednesday 6 July 2011

Kleine sites
• Snelheid omhoog
• Zijn meestal zeer statisch
• Code mag zelfs iets minder performant dan
• Purge kan volledig zijn
Wednesday 6 July 2011

Grote projecten
• Performantie
• Beschikbaarheid
• Kosten drukken (minder hardware)
• Cache invalidation belangrijk
Wednesday 6 July 2011

Opletten voor...
• User-agent voor Mobile Device detection
• Captcha (cookies voor images?)
• X-Forwarded-For
Wednesday 6 July 2011

Varnish niet voor
• Grote downloads
• Volledig getrackte sites (cookies)
Wednesday 6 July 2011

Varnish extra’s
• Grace timeout
• Meerdere backends - loadbalancing / failover
• Specifieke, partial caching
Wednesday 6 July 2011

Uitrollen: dedicated
• Eenvoudige opzet - laag voor webserver
• Configuratie op maat
• Verregaande manipulaties mogelijk
• Op maat, contacteer ons
Wednesday 6 July 2011

Uitrollen: shared
• Algemene configuratie nodig
• Conservatieve configuratie
• Minimale manipulatie mogelijk
• Openminds biedt het aan
Wednesday 6 July 2011

Openminds varnish
• Beta
• Opt-in mechanisme
• Gezonde defaults
• IPv4 en IPv6
• Regels worden nog gecommuniceerd!
Wednesday 6 July 2011

Q & A
Wednesday 6 July 2011

Varnish voor webbouwers
Openminds TechTalk6 juli 2011
www.openminds.beManaged hosting solutions
Twitter : @openminds
Wednesday 6 July 2011