Nginx+Redis Dynamic Page Caching & Cache Purging (vs Varnish)
r at roze.lv
Thu Jul 29 08:32:38 UTC 2021
> And most importantly, how its capabilities compare to Varnish. From my searching and articles I have read so far, the general
consensus seems to be that Varnish is more flexible and offers more abilities for dynamic page caching
and cache purging. Is this indeed the case today?
Depends on what are your requirements.
While Varnish with its VCL might be more "programmable" from the get go (I imagine you can achieve the same with openresty (nginx and Lua)) there are advantages and drawbacks for each product. I haven't used recent versions of varnish (so these points might be now invalid) here are some from my own experience:
- it seems Varnish still doesn't have a native SSL/TLS support  so you need some SSL termination/offloading (hitch, haproxy, nginx or some CDN) above it - adds and extra layer and additional piece of software you have to manage
- the community nginx version doesn't have a callable cache PURGE option  - you have to either use the nginx plus version or compile a third party module for that. Varnish offers that by default.
- Varnish has different kinds of storage backends (mmap, umem,file etc) which might be more optimal/performant for particular cases. For nginx besides the file based you have to use other services redis/memcache etc. On the other hand the persistent storage for Varnish seems to be deprecated what is/could be problematic for large caches in case of restarts.
- based on your cache objects (count) there might be some hardware requirement differences - Varnish used to have a 1Kb per object memory overhead (even using a file based storage backend) - and in my case on a 32Gb ram node I could cache at most ~33mil objects while nginx on the same hardware could handle 800+ mil easily (obviously nowadays ram amounts might not be an issue)
My 2 cents ..
More information about the nginx