Hacker News new | past | comments | ask | show | jobs | submit login
Making Posterous faster with Varnish page caching (technology.posterous.com)
104 points by rantfoil on Sept 17, 2010 | hide | past | favorite | 20 comments



Pushing dynamic content via AJAX and caching the much larger part of the page that isn't dynamic is a great tip -- much better than caching fragments. I will now steal it and appear smart by telling others. :-P


Make sure you run your specific implementation past an SEO who knows what they're doing -- and on this issue, most don't. (The sweet spot is probably caching the whole page for non logged-in users and regenerating that "relatively infrequently", and doing the AJAX trick for your logged-in users only.)


I also like to cache resources as JSON and then render them into a template with Ajax.


Nice choice. This post about Varnish architecture is one of my favorites: http://www.varnish-cache.org/trac/wiki/ArchitectNotes


"The Varnish Guy", as many call him here and on reddit is none other than Poul-Henning Kamp, Yeah, that phk from FreeBSD. So, yeah, you're gonna get some top-notch systems engineering from him.


Varnish is most definitely a huge win. It can be somewhat of a pain to install if you're not using Chef or something, though. Here's some helpful info I compiled that might come in handy for first-timers:

Installing Varnish with nginx, Passenger, and Monit on Ubuntu 8.10 intrepid:

http://trevorturk.com/2009/10/22/installing-varnish-with-ngi...

It's a bit out of date now, but basically still applicable.

Also, here are some packages for Sprinkle, which is an alternative to Chef that I like:

http://github.com/trevorturk/sprinkle-packages

Varnish is not installed by the default example, but look in packages/varnish.rb and you'll be able to sort it out.

Go go gadget Varnish!


Slightly off-topic: Varnish has some really beautiful C code. It's so good you can get the source code in book form. Check out: http://ing.dk/modules/xphoto/cache/40/31740_460_400.jpg http://phk.freebsd.dk/misc/_book2.pdf ;)


It's a textbook example of how to code up a unix daemon that does a spectacular amount of work.


I really love Varnish, but hate VCL. I wish they'd have embedded Lua or something. There's all sorts of cool stuff you could do with better scripting.


I think the unique point about VCL is that it compiles down to machine code. Varnish makes a big thing about doing things the fastest way possible.


I didn't realize this for some reason, makes it a bit more obvious as to why you can actually embed C. /slaps forehead


VCL is actually one of the strong points of varnish, if you have a more complex situation you can pull all kinds of tricks without slowing down.


Happy to see varnish get so much airtime recently, it's a great piece of software and I would not be able to run my service at the current budget without it. If you are not a varnish user yet and you have a high volume site, go check it out, and save yourself some big $ by better utilizing the servers that you already have.


Varnish is very attractive, and it is something that my organization is beginning to look at.

But, this appears to be a new blog from Posterous, with this submission being it's first post, and it comes to HN just after Posterous had some, well potentially negative press about their traffic.

Am I off base in asserting that this blog post is a marketing play? And if this isn't their first blog post, please let me know of my grave error (and down-vote me accordingly)

Edit and follow-up: This blog has been around for a while, so I guess I'll sit back and relax. However, I'll still stand behind the marketing assertion.


Corporate blogs exist solely for marketing purposes. There's nothing wrong with that.


Their description of Lacquer sounds problematic to me.

The usual failure case for this is that a cache node goes down for awhile, misses some invalidation messages, then comes up and starts serving (stale) traffic again.

This case isn't so bad if you keep your TTL low, and have cheap page revalidation.


Ideally invalidation happens on an offline queue with retry support. Server down? Reschedule job and retry later.

We use Delayed Job at Posterous for things like this. Resque works too.


Interesting, we also added a Varnish based cache layer and also got a dramatic performance boost. The connections to the backend dropped to 50%, taking off a lot load.

I am currently going through your VCL to take some ideas for improvement. Thanks for posting that.


Any opinions on pros/cons of using Varnish vs a CDN (Akamai/Limelight)


Getting -> 502 Bad Gateway




Consider applying for YC's W25 batch! Applications are open till Nov 12.

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

Search: