I have noticed that the leaderboards seem to be very slow to load.
Like recently I timed it and it took about 5 seconds for the weekly German leaderboard to load, and then 12 seconds for the all-time one to load. The problem seems to have steadily gotten worse over the past couple years.
If this is an issue with load / heavy usage of the website, maybe this could be solved by having a cached value for the points that is not updated in real-time, and then the system could manually update the entry of the user who is checking the leaderboard at the time. Then have the cached field with a standard btree index in the database, or something like that…this whole setup would have minimal load on the server but would make the leaderboards display nearly-instantly. At least that’s how I’d try to solve this!
There are a couple of reasons that I don’t think that will fly.
The more selfish one is that most of the time when I check the leaderboard I’m not checking for my own performance, but rather checking to see how people that I like are doing. And if their scores were cached until THEY looked at the leaderboard (assuming that they ever do), then I’d have no idea how they’re doing.
The broader issue is this; if looking at the leaderboard only updated YOUR score, you would have no idea whatsoever about where you stand in relation to people who haven’t looked at the leaderboard since the last cache was done. You could be showing as, say, third (“Yaaay!”), but in reality the 5 people “behind” you are 10 to 20 thousand points ahead of you and you’re just looking at their cached values from last Tuesday. In which case, there would be no point in looking at the leaderboard at all, as opposed to just looking at your own non-leaderboard stats. A leaderboard is only useful if it shows everyone’s current points, not just your own.
I do however agree that it’s slow, and the main improvement that I’d like to see is that you be able to select the measures that you want BEFORE it calculates. It’s not always about points, and it’s not always about weekly.