Log in

No account? Create an account
Friends page in JavaScript - brad's life [entries|archive|friends|userinfo]
Brad Fitzpatrick

[ website | bradfitz.com ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Friends page in JavaScript [Sep. 12th, 2005|10:49 pm]
Brad Fitzpatrick
[Tags|, , ]

In my copious free time, I've "ported" the LiveJournal friend's page algorithm from Perl (running on the server), to JavaScript (running in the browser).

So instead of making one huge friends page request and getting back a rendered document with 95% duplicate stuff that your client has already downloaded 15 seconds ago when you habitually hammered refresh, your client instead makes dozens of tiny requests, easily cachable on both the client and server, all the way up to the BIG-IP where I can later just instruct it to 304 any If-Modified-Since request on certain immutable URLs. (ala /userpic/ requests)

Plus it can have a background thread polling the last updated times of your friends page, deciding when to refresh itself, just doing the minimum work necessary to update fully. And even if you hit shift-reload to cache-bust, that only cache-busts the pages necessary to onLoad() the document. After that, javascript takes over so the browser goes back to caching. (Had to do some an old-school work-around to make Firefox cache, but IE behaves.... I wish XmlHttpRequest's caching behavior was specified and consistent.)

Anyway, works in IE/Safari/Firefox. Been reading my friend's page in it the past couple days. Pretty addictive.

I'll post a URL when it's beautified a bit and it's not lacking 75% of its future feature set.

[User Picture]From: brad
2005-09-13 07:18 am (UTC)
Yeah. Or more likely tell you to go use the friends page, since this system is at a different URL.

There will be a new option to let you disable your friends page... either completely, or just the link to it from your journal.

So for a couple years (or likely forever), the friends page will still exist for those that don't want to use the fancy version.
(Reply) (Parent) (Thread)
[User Picture]From: alohawolf
2005-09-13 08:23 am (UTC)
see.. once it was working, I would default it to the new system, and then allow a user to select much like they can select a page style for LJ, select which manner they wish to use.
(Reply) (Parent) (Thread)
[User Picture]From: brad
2005-09-13 04:04 pm (UTC)
Naah, it'll be so different, it'll be opt-in. I won't make it the default.
(Reply) (Parent) (Thread)
[User Picture]From: subbes
2005-09-13 02:29 pm (UTC)
Or more likely tell you to go use the friends page, since this system is at a different URL.

Could those with no javascript get bounced to a (possibly re-written, since it apparently wasn't 'clean code') version of mode=live? That would allow javascript-less people to enjoy the live view.
(Reply) (Parent) (Thread)
[User Picture]From: brad
2005-09-13 04:05 pm (UTC)
Not going to happen.
(Reply) (Parent) (Thread)
[User Picture]From: subbes
2005-09-13 04:08 pm (UTC)
Ah, well, thanks for the answer.
(Reply) (Parent) (Thread)