3. 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
4. normaal
Client
Internetlijn
Server
Datacentrum
Wednesday 6 July 2011
5. klassieke proxy
Trage Internetlijn
Client
Client Proxy Server
Client
Datacentrum
Wednesday 6 July 2011
6. reverse proxy
Client Snelle lijnen
Client
Client Proxy Server
Datacentrum
Wednesday 6 July 2011
7. reverse proxy
Client Snelle lijnen
Client
Client Proxy Server
Server
Server
Datacentrum
Wednesday 6 July 2011
8. caching reverse proxy
Client Caching
Client
Client Server
Server
Proxy Server
Datacentrum
Wednesday 6 July 2011
9. Waarom?
• Serverbelasting omlaag
• Veel snellere site-ervaring
• Veel meer hits/s afwerken met zelfde
hardware
• Ademruimte voor serverhits
Wednesday 6 July 2011
19. 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
20. Cookies
• Sessie - antwoord niet cachen
• Google - doet er op zich niet toe
• Variaties - antwoord wel cachebaar
Wednesday 6 July 2011
21. Stel...
• ... dat de webapplicatie dit meegeeft
• browser-cache hints worden gestuurd
• meestal fout
Wednesday 6 July 2011
24. Varnish manipuleert
• Zowel aanvraag als antwoord
• Strippen, herzetten, ... van velden
• Cookies manipuleren
• Cache-timings
Wednesday 6 July 2011
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 dagen
Wednesday 6 July 2011
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
28. 1 second cache
• Pollers
• 100 tot 10000 polls per seconde
• +/- timestamp terugsturen
• zorgt voor 99 tot 9999 minder hits/s
Wednesday 6 July 2011
30. Images
• Hard forceren
• Alle cookies strippen
• Hogere cache-control zetten
Wednesday 6 July 2011
31. 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
32. Anonieme cookies
• Drupal 6
• Symfony
• CakePHP
• Rails
• ...
Wednesday 6 July 2011
33. Admin interfaces
• Volledig namespaced (/admin/...)
• Andere url (admin.openminds.be)
• Sessie-cookie verwijderen bij logout
Wednesday 6 July 2011
34. Logged in users
• Moeilijk!
• Assets op andere hosts/url
• Ajax ?
• Partial caching van Varnish (advanced)
Wednesday 6 July 2011
35. There are only two hard things in Computer Science:
cache invalidation and naming things
— Phil Karlton
Wednesday 6 July 2011
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. Webbouwers
• Anonieme cookies nodig?
• Admin sectie duidelijk
• Variaties aantoonbaar (language-cookie bv)
• Cache-control headers zijn belangrijk
• Vooraf over nadenken
Wednesday 6 July 2011
38. Kleine sites
• Snelheid omhoog
• Zijn meestal zeer statisch
• Code mag zelfs iets minder performant dan
• Purge kan volledig zijn
Wednesday 6 July 2011
39. Grote projecten
• Performantie
• Beschikbaarheid
• Kosten drukken (minder hardware)
• Cache invalidation belangrijk
Wednesday 6 July 2011
40. Opletten voor...
• User-agent voor Mobile Device detection
• Captcha (cookies voor images?)
• X-Forwarded-For
Wednesday 6 July 2011
41. Varnish niet voor
• Grote downloads
• Volledig getrackte sites (cookies)
Wednesday 6 July 2011
43. Uitrollen: dedicated
• Eenvoudige opzet - laag voor webserver
• Configuratie op maat
• Verregaande manipulaties mogelijk
• Op maat, contacteer ons
Wednesday 6 July 2011
44. Uitrollen: shared
• Algemene configuratie nodig
• Conservatieve configuratie
• Minimale manipulatie mogelijk
• Openminds biedt het aan
Wednesday 6 July 2011
45. Openminds varnish
• Beta
• Opt-in mechanisme
• Gezonde defaults
• IPv4 en IPv6
• Regels worden nog gecommuniceerd!
Wednesday 6 July 2011