Techtalk Varnish

1,215 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,215
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Techtalk Varnish

  1. 1. Varnish voor webbouwers Openminds TechTalk 6 juli 2011 www.openminds.be Managed hosting solutionsWednesday 6 July 2011
  2. 2. SOFTWAREWednesday 6 July 2011
  3. 3. Varnish • Noorse tabloid Verdens Gang - 1.0 in 2006 - 3.0 enkele dagen terug • Snelheidswinst site: 10x - 300x • caching HTTP reverse proxyWednesday 6 July 2011
  4. 4. normaal Client Internetlijn Server DatacentrumWednesday 6 July 2011
  5. 5. klassieke proxy Trage Internetlijn Client Client Proxy Server Client DatacentrumWednesday 6 July 2011
  6. 6. reverse proxy Client Snelle lijnen Client Client Proxy Server DatacentrumWednesday 6 July 2011
  7. 7. reverse proxy Client Snelle lijnen Client Client Proxy Server Server Server DatacentrumWednesday 6 July 2011
  8. 8. caching reverse proxy Client Caching Client Client Server Server Proxy Server DatacentrumWednesday 6 July 2011
  9. 9. Waarom? • Serverbelasting omlaag • Veel snellere site-ervaring • Veel meer hits/s afwerken met zelfde hardware • Ademruimte voor serverhitsWednesday 6 July 2011
  10. 10. Wednesday 6 July 2011
  11. 11. Caching • Identieke aanvraag - identiek antwoord • We houden het volledige antwoord bij • Headers • Data (HTML)Wednesday 6 July 2011
  12. 12. Identieke aanvraag Identiek antwoordWednesday 6 July 2011
  13. 13. 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.1309861948Wednesday 6 July 2011
  14. 14. 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.1309861948Wednesday 6 July 2011
  15. 15. Aanvraag • Host • URI (pad, method/verb, version) • Cookies • Encoding / compressieWednesday 6 July 2011
  16. 16. 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: fosforWednesday 6 July 2011
  17. 17. Wat cachen? • Statische content (images, css, js, ...) • Hoofdpagina’s / hoofdpaden • Zoveel mogelijk • Versie per variatie bijhouden (encoding...) • GET/HEADWednesday 6 July 2011
  18. 18. Wednesday 6 July 2011
  19. 19. Wat niet cachen • admin/management secties • pagina’s die zich aanpassen aan user (logged in, winkelmandje, profielen, ...) • 404 / 500 / ... • POST/PUT/DELETEWednesday 6 July 2011
  20. 20. Cookies • Sessie - antwoord niet cachen • Google - doet er op zich niet toe • Variaties - antwoord wel cachebaarWednesday 6 July 2011
  21. 21. Stel... • ... dat de webapplicatie dit meegeeft • browser-cache hints worden gestuurd • meestal foutWednesday 6 July 2011
  22. 22. 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: fosforWednesday 6 July 2011
  23. 23. Cache hints • max-age - eenvoudig (HTTP 1.1) • expires - zeer specifiek (HTTP 1.0) • “pragma: no-cache” • etags • ...Wednesday 6 July 2011
  24. 24. Varnish manipuleert • Zowel aanvraag als antwoord • Strippen, herzetten, ... van velden • Cookies manipuleren • Cache-timingsWednesday 6 July 2011
  25. 25. 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 dagenWednesday 6 July 2011
  26. 26. Een voorbeeld • Gewone, publieke site • Rails-applicatie met eigen CMS • Eenvoudige VDS • 100Mbps • Eenvoudige varnish config (cache-control was correct)Wednesday 6 July 2011
  27. 27. Wednesday 6 July 2011
  28. 28. 1 second cache • Pollers • 100 tot 10000 polls per seconde • +/- timestamp terugsturen • zorgt voor 99 tot 9999 minder hits/sWednesday 6 July 2011
  29. 29. 1 second cacheWednesday 6 July 2011
  30. 30. Images • Hard forceren • Alle cookies strippen • Hogere cache-control zettenWednesday 6 July 2011
  31. 31. Talen • Taal niet opslaan in sessie • Taal in cookie opslaan (language=nl) • Wordt een variatie voor Varnish • Homepagina voor Nederlands • Homepagina voor FransWednesday 6 July 2011
  32. 32. Anonieme cookies • Drupal 6 • Symfony • CakePHP • Rails • ...Wednesday 6 July 2011
  33. 33. Admin interfaces • Volledig namespaced (/admin/...) • Andere url (admin.openminds.be) • Sessie-cookie verwijderen bij logoutWednesday 6 July 2011
  34. 34. Logged in users • Moeilijk! • Assets op andere hosts/url • Ajax ? • Partial caching van Varnish (advanced)Wednesday 6 July 2011
  35. 35. There are only two hard things in Computer Science: cache invalidation and naming things — Phil KarltonWednesday 6 July 2011
  36. 36. 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
  37. 37. Webbouwers • Anonieme cookies nodig? • Admin sectie duidelijk • Variaties aantoonbaar (language-cookie bv) • Cache-control headers zijn belangrijk • Vooraf over nadenkenWednesday 6 July 2011
  38. 38. Kleine sites • Snelheid omhoog • Zijn meestal zeer statisch • Code mag zelfs iets minder performant dan • Purge kan volledig zijnWednesday 6 July 2011
  39. 39. Grote projecten • Performantie • Beschikbaarheid • Kosten drukken (minder hardware) • Cache invalidation belangrijkWednesday 6 July 2011
  40. 40. Opletten voor... • User-agent voor Mobile Device detection • Captcha (cookies voor images?) • X-Forwarded-ForWednesday 6 July 2011
  41. 41. Varnish niet voor • Grote downloads • Volledig getrackte sites (cookies)Wednesday 6 July 2011
  42. 42. Varnish extra’s • Grace timeout • Meerdere backends - loadbalancing / failover • Specifieke, partial cachingWednesday 6 July 2011
  43. 43. Uitrollen: dedicated • Eenvoudige opzet - laag voor webserver • Configuratie op maat • Verregaande manipulaties mogelijk • Op maat, contacteer onsWednesday 6 July 2011
  44. 44. Uitrollen: shared • Algemene configuratie nodig • Conservatieve configuratie • Minimale manipulatie mogelijk • Openminds biedt het aanWednesday 6 July 2011
  45. 45. Openminds varnish • Beta • Opt-in mechanisme • Gezonde defaults • IPv4 en IPv6 • Regels worden nog gecommuniceerd!Wednesday 6 July 2011
  46. 46. Q&AWednesday 6 July 2011
  47. 47. Varnish voor webbouwers Openminds TechTalk 6 juli 2011 www.openminds.be Managed hosting solutions Twitter: @openmindsWednesday 6 July 2011

×