Wouldn't server side caching run into issues since the page is different for each user? For instance, all the vote up/down buttons seem to have your username hardcoded into them as the href.
One possible solution is to decouple the personalized data and load it separately using AJAX. Votes are already implemented in a similar way.
Generally, I am proponent of HTTP caching. It requires some modifications of web sites in order to be effective but still the whole system remains less complicated, compared to implementations of cache on back-end (like `memcached').
For example reddit, which is similar to HN, is in constant struggle with their cache subsystems (http://blog.reddit.com/2010/05/reddits-may-2010-state-of-ser...). I believe it can be avoided by keeping cache and web site code apart.
I don't know how many people are not logged in, though. Those pages could be cached for a minute or so.