Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Openminds Techtalk: Varnish

Openminds Techtalk: Varnish

Openminds techtalk about Varnish - Dutch video is at http://vimeo.com/openminds

Bernard Grymonpon

October 11, 2011
Tweet

More Decks by Bernard Grymonpon

Other Decks in Technology

Transcript

  1. Varnish • Noorse tabloid Verdens Gang - 1.0 in 2006

    - 3.0 enkele dagen terug • Snelheidswinst site: 10x - 300x • caching HTTP reverse proxy Tuesday 11 October 2011
  2. Waarom? •Serverbelasting omlaag •Veel snellere site-ervaring •Veel meer hits/s afwerken

    met zelfde hardware •Ademruimte voor serverhits Tuesday 11 October 2011
  3. Caching •Identieke aanvraag - identiek antwoord •We houden het volledige

    antwoord bij •Headers •Data (HTML) Tuesday 11 October 2011
  4. Aanvraag GET / HTTP/1.1 Host: www.openminds.be User-Agent: Mozilla/5.0 (Macintosh; Intel

    Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en,en-us;q=0.7,nl-be;q=0.3 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Connection: keep-alive Cookie: __utma=121817557.1268321880.1308719392.1309764385.1309861948.8; __utmz=121817557.1308719392.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _openminds_session=BAh7CToQX2NzcmZfdG9rZW4iMXBqNFJyS1RKRUxqNVpSNXBRb2R4N1RTN25GY1RSaVhKQVZscXR6alBqRU09 Og9zZXNzaW9uX2lkIiU3YzEwNjI4YjQ2ODhmMGE4OWE2NTRhYjU2ZmU1NTgxNyIMdXNlcl9pZGkKIgpmbGFzaElDOidBY3Rpb25Db25 0cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewY6C25vdGljZSIkWW91ciBwYWdlIGhhcyBiZWVuIHNhdmVkIGJlbG93LgY6CkB1c2Vkew Y7CFQ%3D--f8439d4c16ca7b72afebf9ae05f150700d6ee0e1; __utmc=121817557; __utmb=121817557.2.10.1309861948 Tuesday 11 October 2011
  5. Aanvraag GET / HTTP/1.1 Host: www.openminds.be User-Agent: Mozilla/5.0 (Macintosh; Intel

    Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en,en-us;q=0.7,nl-be;q=0.3 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Connection: keep-alive Cookie: __utma=121817557.1268321880.1308719392.1309764385.1309861948.8; __utmz=121817557.1308719392.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _openminds_session=BAh7CToQX2NzcmZfdG9rZW4iMXBqNFJyS1RKRUxqNVpSNXBRb2R4N1RTN25GY1RSaVhKQVZscXR6alBqRU09 Og9zZXNzaW9uX2lkIiU3YzEwNjI4YjQ2ODhmMGE4OWE2NTRhYjU2ZmU1NTgxNyIMdXNlcl9pZGkKIgpmbGFzaElDOidBY3Rpb25Db25 0cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewY6C25vdGljZSIkWW91ciBwYWdlIGhhcyBiZWVuIHNhdmVkIGJlbG93LgY6CkB1c2Vkew Y7CFQ%3D--f8439d4c16ca7b72afebf9ae05f150700d6ee0e1; __utmc=121817557; __utmb=121817557.2.10.1309861948 Tuesday 11 October 2011
  6. Antwoord HTTP/1.1 200 OK Server: nginx/0.5.32 Date: Tue, 05 Jul

    2011 10:52:36 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.15 Etag: "25ec477310b3f81f097d5f6f3b5824f6" X-Rack-Cache: stale, invalid, store X-Content-Digest: af41dfcde5cfeaa55717261890560d56595be969 X-Runtime: 2559 Cache-Control: max-age=300, public Age: 21 Set-Cookie: _openminds_session=BAh7CToQX2NzcmZfdG9rZW4iMXBqNFJyS1RKRUxqNVpSNXBRb2R4N1RTN25GY1RSaVhKQVZscXR6alBqRU09O g9zZXNzaW9uX2lkIiU3YzEwNjI4YjQ2ODhmMGE4OWE2NTRhYjU2ZmU1NTgxNyIMdXNlcl9pZGkKIgpmbGFzaElDOidBY3Rpb25Db250c m9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewY6C25vdGljZSIkWW91ciBwYWdlIGhhcyBiZWVuIHNhdmVkIGJlbG93LgY6CkB1c2VkewY7C FQ%3D--f8439d4c16ca7b72afebf9ae05f150700d6ee0e1; path=/; HttpOnly Content-Length: 11565 Status: 200 X-server: pro-005 X-Proxy: fosfor Tuesday 11 October 2011
  7. Wat cachen? •Statische content (images, css, js, ...) •Hoofdpagina’s /

    hoofdpaden •Zoveel mogelijk •Versie per variatie bijhouden (encoding...) •GET/HEAD Tuesday 11 October 2011
  8. Wat niet cachen •admin/management secties •pagina’s die zich aanpassen aan

    user (logged in, winkelmandje, profielen, ...) •404 / 500 / ... •POST/PUT/DELETE Tuesday 11 October 2011
  9. Cookies •Sessie - antwoord niet cachen •Google - doet er

    op zich niet toe •Variaties - antwoord wel cachebaar Tuesday 11 October 2011
  10. Cache-Control HTTP/1.1 200 OK Server: nginx/0.5.32 Date: Tue, 05 Jul

    2011 10:52:36 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.15 Etag: "25ec477310b3f81f097d5f6f3b5824f6" X-Rack-Cache: stale, invalid, store X-Content-Digest: af41dfcde5cfeaa55717261890560d56595be969 X-Runtime: 2559 Cache-Control: max-age=300, public Age: 21 Set-Cookie: _openminds_session=BAh7CToQX2NzcmZfdG9rZW4iMXBqNFJyS1RKRUxqNVpSNXBRb2R4N1RTN25GY1RSaVhKQVZscXR6alBqRU09O g9zZXNzaW9uX2lkIiU3YzEwNjI4YjQ2ODhmMGE4OWE2NTRhYjU2ZmU1NTgxNyIMdXNlcl9pZGkKIgpmbGFzaElDOidBY3Rpb25Db250c m9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewY6C25vdGljZSIkWW91ciBwYWdlIGhhcyBiZWVuIHNhdmVkIGJlbG93LgY6CkB1c2VkewY7C FQ%3D--f8439d4c16ca7b72afebf9ae05f150700d6ee0e1; path=/; HttpOnly Content-Length: 11565 Status: 200 X-server: pro-005 X-Proxy: fosfor Tuesday 11 October 2011
  11. Cache hints •max-age - eenvoudig (HTTP 1.1) •expires - zeer

    specifiek (HTTP 1.0) •“pragma: no-cache” •etags •... Tuesday 11 October 2011
  12. Varnish manipuleert •Zowel aanvraag als antwoord •Strippen, herzetten, ... van

    velden •Cookies manipuleren •Cache-timings Tuesday 11 October 2011
  13. 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 Tuesday 11 October 2011
  14. Een voorbeeld •Gewone, publieke site •Rails-applicatie met eigen CMS •Eenvoudige

    VDS •100Mbps •Eenvoudige varnish config (cache-control was correct) Tuesday 11 October 2011
  15. 1 second cache •Pollers •100 tot 10000 polls per seconde

    •+/- timestamp terugsturen •zorgt voor 99 tot 9999 minder hits/s Tuesday 11 October 2011
  16. Talen •Taal niet opslaan in sessie •Taal in cookie opslaan

    (language=nl) •Wordt een variatie voor Varnish •Homepagina voor Nederlands •Homepagina voor Frans Tuesday 11 October 2011
  17. Logged in users •Moeilijk! •Assets op andere hosts/url •Ajax ?

    •Partial caching van Varnish (advanced) Tuesday 11 October 2011
  18. There are only two hard things in Computer Science: cache

    invalidation and naming things — Phil Karlton Tuesday 11 October 2011
  19. Cache invalidation •Wat bij edit/put/post/... •eenvoudig: PURGE op juiste URL(s)

    •control channel •Drupal module •Lacquer gem •Purged de browser niet !!! Tuesday 11 October 2011
  20. Webbouwers •Anonieme cookies nodig? •Admin sectie duidelijk •Variaties aantoonbaar (language-cookie

    bv) •Cache-control headers zijn belangrijk •Vooraf over nadenken Tuesday 11 October 2011
  21. Kleine sites •Snelheid omhoog •Zijn meestal zeer statisch •Code mag

    zelfs iets minder performant dan •Purge kan volledig zijn Tuesday 11 October 2011
  22. Varnish extra’s •Grace timeout •Meerdere backends - loadbalancing / failover

    •Specifieke, partial caching Tuesday 11 October 2011
  23. Uitrollen: dedicated •Eenvoudige opzet - laag voor webserver •Configuratie op

    maat •Verregaande manipulaties mogelijk •Op maat, contacteer ons Tuesday 11 October 2011
  24. Openminds varnish •Beta •Opt-in mechanisme •Gezonde defaults •IPv4 en IPv6

    •Regels worden nog gecommuniceerd! Tuesday 11 October 2011