Download - Techtalk Varnish

Transcript
Page 1: Techtalk Varnish

Varnish voor webbouwers

Openminds TechTalk6 juli 2011

www.openminds.beManaged hosting solutions

Wednesday 6 July 2011

Page 2: Techtalk Varnish

SOFTWARE

Wednesday 6 July 2011

Page 3: Techtalk Varnish

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

Page 4: Techtalk Varnish

normaal

ServerClient Internetlijn

Datacentrum

Wednesday 6 July 2011

Page 5: Techtalk Varnish

klassieke proxy

ServerClient Trage InternetlijnProxy

Datacentrum

ClientClient

Wednesday 6 July 2011

Page 6: Techtalk Varnish

reverse proxy

ServerProxySnelle lijnen

Datacentrum

ClientClientClient

Wednesday 6 July 2011

Page 7: Techtalk Varnish

reverse proxy

ServerProxySnelle lijnen

Datacentrum

ClientClientClient ServerServer

Wednesday 6 July 2011

Page 8: Techtalk Varnish

caching reverse proxy

ServerCachingProxy

Datacentrum

ClientClientClient ServerServer

Wednesday 6 July 2011

Page 9: Techtalk Varnish

Waarom?

• Serverbelasting omlaag

• Veel snellere site-ervaring

• Veel meer hits/s afwerken met zelfde hardware

• Ademruimte voor serverhits

Wednesday 6 July 2011

Page 10: Techtalk Varnish

Wednesday 6 July 2011

Page 11: Techtalk Varnish

Caching

• Identieke aanvraag - identiek antwoord

• We houden het volledige antwoord bij

• Headers

• Data (HTML)

Wednesday 6 July 2011

Page 12: Techtalk Varnish

Identieke aanvraagIdentiek antwoord

Wednesday 6 July 2011

Page 13: Techtalk Varnish

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

Page 14: Techtalk Varnish

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

Page 15: Techtalk Varnish

Aanvraag

• Host

• URI (pad, method/verb, version)

• Cookies

• Encoding / compressie

Wednesday 6 July 2011

Page 16: Techtalk Varnish

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

Page 17: Techtalk Varnish

Wat cachen?

• Statische content (images, css, js, ...)

• Hoofdpagina’s / hoofdpaden

• Zoveel mogelijk

• Versie per variatie bijhouden (encoding...)

• GET/HEAD

Wednesday 6 July 2011

Page 18: Techtalk Varnish

Wednesday 6 July 2011

Page 19: Techtalk Varnish

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

Page 20: Techtalk Varnish

Cookies

• Sessie - antwoord niet cachen

• Google - doet er op zich niet toe

• Variaties - antwoord wel cachebaar

Wednesday 6 July 2011

Page 21: Techtalk Varnish

Stel...

• ... dat de webapplicatie dit meegeeft

• browser-cache hints worden gestuurd

• meestal fout

Wednesday 6 July 2011

Page 22: Techtalk Varnish

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

Page 23: Techtalk Varnish

Cache hints

• max-age - eenvoudig (HTTP 1.1)

• expires - zeer specifiek (HTTP 1.0)

• “pragma: no-cache”

• etags

• ...

Wednesday 6 July 2011

Page 24: Techtalk Varnish

Varnish manipuleert

• Zowel aanvraag als antwoord

• Strippen, herzetten, ... van velden

• Cookies manipuleren

• Cache-timings

Wednesday 6 July 2011

Page 25: Techtalk Varnish

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

Page 26: Techtalk Varnish

Een voorbeeld

• Gewone, publieke site

• Rails-applicatie met eigen CMS

• Eenvoudige VDS

• 100Mbps

• Eenvoudige varnish config (cache-control was correct)

Wednesday 6 July 2011

Page 27: Techtalk Varnish

Wednesday 6 July 2011

Page 28: Techtalk Varnish

1 second cache

• Pollers

• 100 tot 10000 polls per seconde

• +/- timestamp terugsturen

• zorgt voor 99 tot 9999 minder hits/s

Wednesday 6 July 2011

Page 29: Techtalk Varnish

1 second cache

Wednesday 6 July 2011

Page 30: Techtalk Varnish

Images

• Hard forceren

• Alle cookies strippen

• Hogere cache-control zetten

Wednesday 6 July 2011

Page 31: Techtalk Varnish

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

Page 32: Techtalk Varnish

Anonieme cookies

• Drupal 6

• Symfony

• CakePHP

• Rails

• ...

Wednesday 6 July 2011

Page 33: Techtalk Varnish

Admin interfaces

• Volledig namespaced (/admin/...)

• Andere url (admin.openminds.be)

• Sessie-cookie verwijderen bij logout

Wednesday 6 July 2011

Page 34: Techtalk Varnish

Logged in users

• Moeilijk!

• Assets op andere hosts/url

• Ajax ?

• Partial caching van Varnish (advanced)

Wednesday 6 July 2011

Page 35: Techtalk Varnish

There are only two hard things in Computer Science: cache invalidation and naming things

— Phil Karlton

Wednesday 6 July 2011

Page 36: Techtalk Varnish

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

Page 37: Techtalk Varnish

Webbouwers

• Anonieme cookies nodig?

• Admin sectie duidelijk

• Variaties aantoonbaar (language-cookie bv)

• Cache-control headers zijn belangrijk

• Vooraf over nadenken

Wednesday 6 July 2011

Page 38: Techtalk Varnish

Kleine sites

• Snelheid omhoog

• Zijn meestal zeer statisch

• Code mag zelfs iets minder performant dan

• Purge kan volledig zijn

Wednesday 6 July 2011

Page 39: Techtalk Varnish

Grote projecten

• Performantie

• Beschikbaarheid

• Kosten drukken (minder hardware)

• Cache invalidation belangrijk

Wednesday 6 July 2011

Page 40: Techtalk Varnish

Opletten voor...

• User-agent voor Mobile Device detection

• Captcha (cookies voor images?)

• X-Forwarded-For

Wednesday 6 July 2011

Page 41: Techtalk Varnish

Varnish niet voor

• Grote downloads

• Volledig getrackte sites (cookies)

Wednesday 6 July 2011

Page 42: Techtalk Varnish

Varnish extra’s

• Grace timeout

• Meerdere backends - loadbalancing / failover

• Specifieke, partial caching

Wednesday 6 July 2011

Page 43: Techtalk Varnish

Uitrollen: dedicated

• Eenvoudige opzet - laag voor webserver

• Configuratie op maat

• Verregaande manipulaties mogelijk

• Op maat, contacteer ons

Wednesday 6 July 2011

Page 44: Techtalk Varnish

Uitrollen: shared

• Algemene configuratie nodig

• Conservatieve configuratie

• Minimale manipulatie mogelijk

• Openminds biedt het aan

Wednesday 6 July 2011

Page 45: Techtalk Varnish

Openminds varnish

• Beta

• Opt-in mechanisme

• Gezonde defaults

• IPv4 en IPv6

• Regels worden nog gecommuniceerd!

Wednesday 6 July 2011

Page 46: Techtalk Varnish

Q & A

Wednesday 6 July 2011

Page 47: Techtalk Varnish

Varnish voor webbouwers

Openminds TechTalk6 juli 2011

www.openminds.beManaged hosting solutions

Twitter : @openminds

Wednesday 6 July 2011