|
We have had multiple discussions with the Facebook folks, and are well aware of the complexities of both sites. I believe you are actually underestimating reddit's complexity. Here are some examples: When you load a comments page with 500 comments, there are 1000s of data points that have to be loaded. For every comment, we have to check how you voted on it to draw the arrows, we have to check if you are the author, we have to check if you are allowed to remove that comment as a moderator, we have to check if you can edit it, if the author is your friend, and so on. And we have to do that 500 times. When you load a listing, we have to pull your subscriptions, and then merge the results from all the reddits you subscribe to. Then we have to check most of the same things as we do for comments. After all that checking, we have a to render a page that is customized just for you. Some of that will come from the render cache and some from the data cache, but it is still highly customized. The big difference is that Facebook doesn't have any logged out users, whereas we do. Akamai takes care of our logged out users, but rendering the page for a logged in user is extremely complicated. |
And I'm not trying to be difficult, but... I'm not convinced.
In your scenario, the 500 comments are already loaded for any user. The comments you have authored are a small dataset, not a check for each and every comment. (At least, I HOPE not.) Similarly for your friends comments... and whether or not you are a mod is a single check.
For the average thread and user, this really should be a handful of checks. Surely, there are some very active users with many friends for whom the checks could hit numbers in the 1000s. But that should be the edge case, shouldn't it?
Same thing for loading a listing. Pulling subscriptions and merging sounds like just DB query design. All the "same things as we do for comments" should be minimized as described above.
Rending a page is just that -- rendering... highly customized, yes. But customized on the previously discussed criteria, not a while new set of customizations.
And like you said, if you aren't logged in, none of this applies.
Which all begs two questions: 1) What percentage of users are logged in? 2) What percentage of page renders really fit the scenario you described above, with enough comments and related data points that the checks hit 4 digits?
If you come back and say 90% of your page renders needs 1000 data points, I'd certainly concede the point. But I'd be very surprised. (And highly suggest that new algorithms are needed.)
But I'm sincerely honest what those percentages are?