SoylentNews.org Temporarily Offline?
SoylentNews.org (including li694-22.members.linode.com) is offline at the moment. The site currently returns the following:
Error 503 Service UnavailableThere has been a lot of drama going on with SoylentNews lately. The nominal founder, Barrabas, wanted to create a for-profit business, but the majority of volunteers wanted to avoid the potential for another sell-out which lead to the Slashcott in the first place. Due to conflicts with those volunteers, Barrabas has sold the domain to a new and unknown owner. If a deal between the mystery domain owner and NCommander and his volunteer 'Overlords' cannot be reached, the Site Formerly Known as SoylentNews can be found on the default Linode address.
Service Unavailable
Guru Meditation:
XID: 1060599780
Varnish cache server
My own initial thoughts were: why not default to a non-JS page (flat html) and then use JS (if enabled) to "roll-up" the comments into the collapsed form. This way it works well for everyone.
But I realised after that my own ideas were a bit naive. If every visitor downloads all of the comments (as flat html) then it probably adds considerably to the load and cost of running the server. By using Javascript you are selectively reducing the amount loaded by most (non-logged in) users. So I did some more thinking and realised that it actually depends on how many comments there are versus how much Javsacript code there is:
- There are three basic ways to handle a page: flat html, javascript on top of flat html, javascript and ajax
- Logged in users can have preferences which are honoured, but it is also possible to implement similar behaviour for non-logged in users with cookies (ah ha, finally, they are good for something other than tracking) but you'd have to decide if that's worth the hassle.
- The draw back with ajax is that for pages with lots of comments (hundreds) then you've just taken your dozen connections (to get one page) and turned this into hundreds of connections, all hammering at the server. I'm imagining you want some kind of clever algorithm to allow you to balance the data delivered with the initial page load, and that with ajax requests afterwards. Have you considered encapsulating post data in the page, for laying out by the javascript at rendering time? This would relieve the load on the web server, but would make the DB server work much harder since each page load will still want to retrieve all posts from the DB. I was thinking they can be put in some JSON format and then gzipped and inserted into the page code at load time. To strike a balance between initial page load and ajax load you can specify the rules on what gets included with the initial load (all posts, first 100 posts, all +3 and higher posts, etc...). But those rules don't in any way affect what the user sees, just what content is sent on the initial load. Once in the browser then ajax takes over and will selectively load whatever remaining posts the user wants to look at. My own web work has lead me to believe that to keep pages fast and responsive you must reduce the number of connections to the server. My own sites use custom server side aggregation code that glues all my javascripts and css files together into one include, and I always use the css sprites hacks to ensure only one image file is loaded per page. I get much much much better performance this way, but on the other hand I'm working with much lighter load compared to what you must be serving here.
Anyway mate, I'm sure you've spent a *lot* longer thinking about these issues than I have, this was just my $0.02 (or less) worth.
Keep up the good work, your page is brilliant!