techtalk varnish

Post on 22-Apr-2015

1.177 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

top related