Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Varnish in Five Acts (theladders.com)
41 points by spooneybarger on May 3, 2013 | hide | past | favorite | 23 comments


We eventually abandoned Varnish because the purging was too far from our application logic. nginx serves static content just as fast as Varnish does, and so getting our application to write static HTML files that were redirected to via nginx was just as quick as Varnish but easier to purge when needed.


This is what we did at TaskRabbit, and here's our rails midleware to do it: https://github.com/taskrabbit/storehouse


We started off with our own toolkit for purging domains after deploys: https://github.com/robmiller/Varnish-Toolkit

But yeah, it just got a bit painful after a while.


Has anyone found a decent Varnish plugin for Sublime Text/Textmate? There's this -- https://github.com/zephirworks/Varnish.tmbundle -- but it hasn't been updated in a couple years and it fails for moderately complex configs.

The Python plugin works reasonably well for plain VCL syntax highlighting.


I do not think that he should overwrite vcl_hash. By default Varnish caches by the request host and not the backend host?

Here is the default:

sub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } return (hash); }


it caches by host. this would allow you to serve multiple sites through it like:

example.com/foo

and

another.com/foo

without a cache collision.

we don't care about the host as everything is of the same entity service type.


I must have scanned the blog post too quickly. Thanks for the clarification.


Varnish is pretty awesome, but gets complicated when you have user-specific content. You can use things like edge-side includes and such, but it becomes more than plug and play at that point.


For a lot of sites, either using ESIs or including dynamic content via AJAX is a fairly simple solution that still leaves you with the benefits of caching.


For light page customizability like Hello Username. I will include the username in a browser cookie and use some JavaScript to insert it into the page. This way I can still use Varnish to serve most pages.


to make sure I understand, you meant it becomes more plug and play when you use ESI?


I believe he is saying it becomes less plug and play. By saying "it becomes more than plug and play at that point," he means it becomes more effort than plug and play.

That's my read on it, anyway. It always gets dicey interpreting the intent of others :)


Correct, it "becomes more complicated" is what I meant.


ah yes, that makes sense.

thanks.


What did you use to generate those graphs? Love 'em, have to know.



Graphite


It's nice to see x-invalidates in the wild!

Do you have just 1 varnish instance or two?

I never did fully solve the ban propagation problem when running multiple redundant varnish instances.


1 for each service. If we need to scale beyond one per service, I plan on doing sharing across varnishes based on url so we don't have to propagate bans.


need to write me some pygments-vcl for vcl syntax highlighting in octopress and elsewhere.


what's up with the /donjohnson/pulse url?


A reference to Don Johnson's terrible "Hearbeat" song from the 80s?





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: