Caching Solutions:
Varnish
with Bogdan Hadadea
1. General Description: Varnish
• HTTP Accelerator
• Caching reverse proxy
o Sits in front of any HTTP server

• Load Balancer
• Fail Over System
• Perfect Browser caching solution
o Prevents hard refresh calls

• Typical speedup: 300x-1000x
• VCL – compiled to C
• ESI
1. General Description: Varnish
ESI – Edge Side Includes
• Allows page fragmentation
• Fragments with different TTL
• ESI are serialized
• Configurable depth of ESI calls
• Doesn’t support alt and noerror attributes
• ESI calls can’t set cookies
2. Usage: Varnish

• Originally built for Norwegian newspaper
• Current users:
o
o
o
o
o

Facebook
Twitter
Hulu
BBC
Wired
3. Architecture: Varnish - Overview
3. Architecture: Varnish
Main methods:
•
•
•
•
•

vcl_recv – beginning of request
vcl_fetch – after response from backend
vcl_hash – how to create a hash key
vcl_deliver – before a cached object is delivered
vcl_error – when there is an error
3. Architecture: Varnish
VCL_RECV:

•
•
•
•

Manipulate/remove cookies
Manipulate/add/remove headers
Request standardization
Cache bypassing
3. Architecture: Varnish
VCL_FETCH
•
•
•
•
•

Enable ESI
Manipulate headers
Manipulate cookies
Vary
Set/manipulate cache times
4. Comparison: Squid
Advantages of Squid over Varnish:
• Built in SSL support
• Better support for streaming delivery of objects
• Support for antivirus plugins

Advantages of Varnish over Squid:
• Amazing configuration system – VCL
• Better performance and scalability
• Better invalidation support
• Better module support
5. Conclusion

• Simple and great performance increase
• VCL is powerful but sometimes simple is better
• Make sure you can still handle a cold start

Caching solutions with Varnish

  • 1.
  • 2.
    1. General Description:Varnish • HTTP Accelerator • Caching reverse proxy o Sits in front of any HTTP server • Load Balancer • Fail Over System • Perfect Browser caching solution o Prevents hard refresh calls • Typical speedup: 300x-1000x • VCL – compiled to C • ESI
  • 3.
    1. General Description:Varnish ESI – Edge Side Includes • Allows page fragmentation • Fragments with different TTL • ESI are serialized • Configurable depth of ESI calls • Doesn’t support alt and noerror attributes • ESI calls can’t set cookies
  • 4.
    2. Usage: Varnish •Originally built for Norwegian newspaper • Current users: o o o o o Facebook Twitter Hulu BBC Wired
  • 5.
  • 6.
    3. Architecture: Varnish Mainmethods: • • • • • vcl_recv – beginning of request vcl_fetch – after response from backend vcl_hash – how to create a hash key vcl_deliver – before a cached object is delivered vcl_error – when there is an error
  • 7.
    3. Architecture: Varnish VCL_RECV: • • • • Manipulate/removecookies Manipulate/add/remove headers Request standardization Cache bypassing
  • 8.
    3. Architecture: Varnish VCL_FETCH • • • • • EnableESI Manipulate headers Manipulate cookies Vary Set/manipulate cache times
  • 9.
    4. Comparison: Squid Advantagesof Squid over Varnish: • Built in SSL support • Better support for streaming delivery of objects • Support for antivirus plugins Advantages of Varnish over Squid: • Amazing configuration system – VCL • Better performance and scalability • Better invalidation support • Better module support
  • 10.
    5. Conclusion • Simpleand great performance increase • VCL is powerful but sometimes simple is better • Make sure you can still handle a cold start