Varnish voor                        webbouwers                          Openminds TechTalk                             6 j...
SOFTWAREWednesday 6 July 2011
Varnish                   • Noorse tabloid Verdens                        Gang - 1.0 in 2006 - 3.0                        ...
normaal                        Client                                  Internetlijn                                       ...
klassieke proxy                                 Trage Internetlijn          Client          Client         Proxy          ...
reverse proxy          Client        Snelle lijnen          Client           Client                          Proxy      Se...
reverse proxy          Client        Snelle lijnen          Client           Client                          Proxy      Se...
caching reverse proxy          Client                    Caching          Client           Client                         ...
Waarom?                   • Serverbelasting omlaag                   • Veel snellere site-ervaring                   • Vee...
Wednesday 6 July 2011
Caching                   • Identieke aanvraag - identiek antwoord                   • We houden het volledige antwoord bi...
Identieke aanvraag                        Identiek antwoordWednesday 6 July 2011
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/2010...
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/2010...
Aanvraag                   • Host                   • URI (pad, method/verb, version)                   • Cookies         ...
AntwoordHTTP/1.1 200 OKServer: nginx/0.5.32Date: Tue, 05 Jul 2011 10:52:36 GMTContent-Type: text/html; charset=utf-8Connec...
Wat cachen?                   • Statische content (images, css, js, ...)                   • Hoofdpagina’s / hoofdpaden   ...
Wednesday 6 July 2011
Wat niet cachen                   • admin/management secties                   • pagina’s die zich aanpassen aan user (log...
Cookies                   • Sessie - antwoord niet cachen                   • Google - doet er op zich niet toe           ...
Stel...                   • ... dat de webapplicatie dit meegeeft                   • browser-cache hints worden gestuurd ...
Cache-ControlHTTP/1.1 200 OKServer: nginx/0.5.32Date: Tue, 05 Jul 2011 10:52:36 GMTContent-Type: text/html; charset=utf-8C...
Cache hints                   • max-age - eenvoudig (HTTP 1.1)                   • expires - zeer specifiek (HTTP 1.0)     ...
Varnish manipuleert                   • Zowel aanvraag als antwoord                   • Strippen, herzetten, ... van velde...
Cache timings                   • De duur dat Varnish het zelf bijhoudt                        (varnish ttl) - bvb 24 uur ...
Een voorbeeld                   • Gewone, publieke site                   • Rails-applicatie met eigen CMS                ...
Wednesday 6 July 2011
1 second cache                   • Pollers                   • 100 tot 10000 polls per seconde                   • +/- tim...
1 second cacheWednesday 6 July 2011
Images                   • Hard forceren                   • Alle cookies strippen                   • Hogere cache-contro...
Talen                   • Taal niet opslaan in sessie                   • Taal in cookie opslaan (language=nl)            ...
Anonieme cookies                   • Drupal 6                   • Symfony                   • CakePHP                   • ...
Admin interfaces                   • Volledig namespaced (/admin/...)                   • Andere url (admin.openminds.be) ...
Logged in users                   • Moeilijk!                   • Assets op andere hosts/url                   • Ajax ?   ...
There are only two hard things in Computer Science:                cache invalidation and naming things                   ...
Cache invalidation                   • Wat bij edit/put/post/...                   • eenvoudig: PURGE op juiste URL(s)    ...
Webbouwers                   • Anonieme cookies nodig?                   • Admin sectie duidelijk                   • Vari...
Kleine sites                   • Snelheid omhoog                   • Zijn meestal zeer statisch                   • Code m...
Grote projecten                   • Performantie                   • Beschikbaarheid                   • Kosten drukken (m...
Opletten voor...                   • User-agent voor Mobile Device detection                   • Captcha (cookies voor ima...
Varnish niet voor                   • Grote downloads                   • Volledig getrackte sites (cookies)Wednesday 6 Ju...
Varnish extra’s                   • Grace timeout                   • Meerdere backends - loadbalancing / failover        ...
Uitrollen: dedicated                   • Eenvoudige opzet - laag voor webserver                   • Configuratie op maat   ...
Uitrollen: shared                   • Algemene configuratie nodig                   • Conservatieve configuratie            ...
Openminds varnish                   • Beta                   • Opt-in mechanisme                   • Gezonde defaults     ...
Q&AWednesday 6 July 2011
Varnish voor                        webbouwers                          Openminds TechTalk                             6 j...
Upcoming SlideShare
Loading in...5
×

Techtalk Varnish

924

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
924
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×