Using Varnish to accelerate CouchDB

Karel Minařík karel.minarik at gmail.com
Sun Nov 7 10:00:52 CET 2010


Hello,

> I haven't really ever touched Couch, but from what I overheard I think
> you can embed custom code into the database, meaning it should not be
> to hard to wactually have the database call out to Varnish and
> invalidate the content itself.

invalidating the cache could be done most conveniently via the  
_changes feed or via the "update_notification" mechanism [http://wiki.apache.org/couchdb/Regenerating_views_on_update 
, probably. Since not only single documents, but also aggregated view  
results or fulltext queries would get cached, it wouldn't be exactly  
trivial to expire everything. "There are two hard things in computer  
science ..."

I am sorry to ask the same dumb questions over and over, but does it  
mean, that Varnish does not work in ETags, ie. does not support  
"Validation" type of caching as opposed to "Expiration" caching in the  
sense of Ryan Tomayko's article [http://tomayko.com/writings/things-caches-do 
] ?

I am well aware that "dumb caching" based on ETags would not  
accelerate anything when it would make 1 "check" request to backend  
for every 1 request to the cache. It was my impression that Varnish  
could be configured to eg. deal with concurrent 100 requests to some  
resource and "accumulate" them, eg. not send them all to the backend.

The reason I am asking is that in a backend such as a Ruby On Rails,  
computing an ETag could be much cheaper then computing and returning  
whole response. So, once again and for the last time, sorry :) --  
there is no way to use Varnish like this? Only time-based (Expires,  
Last-Modified, etc) caching is possible?

> You might have more luck asking on the Couch list, though.

Yes, definitely, I'll ask there for any experience. There seem to be  
rather little information available -- while I am quite certain that  
lots of people is Using Varnish to accelerate Couch.

Thanks!,

Karel



More information about the varnish-misc mailing list