For my own reference and for others... I need to sort these buggers out or come up with my own solution:
LABjsLABjs (Loading And Blocking JavaScript) is an open-source (MIT license) project supported by Getify Solutions. The core purpose of LABjs is to be an all-purpose, on-demand JavaScript loader, capable of loading any JavaScript resource, from any location, into any page, at any time. Loading your scripts with LABjs reduces resource blocking during page-load, which is an easy and effective way to optimize your site's performance.
LazyLoadLazyLoad is a tiny (only 818 bytes minified and gzipped), dependency-free JavaScript library that makes it super easy to load external JavaScript and CSS files on demand. It's ideal for quickly and unobtrusively loading large external scripts and stylesheets either lazily after the rest of the page has finished loading or on demand as needed.
In addition to CSS support, this version of LazyLoad also adds support for parallel loading of multiple resources in browsers that support it. To load multiple resources in parallel, simply pass an array of URLs in a single LazyLoad call.
jslImagine there's a 4-lane highway between your web browser and the internet itself. This highway is optimize to let pictures, text, and css fly by. But, when it comes to external scripts, the highway creates a toll booth that slows traffic. The worst part is that pictures text, and css caught behind these scripts have to wait until they pass through. JSL is the latest in toll both avoidance. It creates an express lane that lets all pictures, text, css, and external scripts pass by without worrying about toll booths. That means you save time and money on traffic costs
NBL.jsNBL.js is a tiny script that will make your HTML pages load faster by loading all your JavaScript files asynchronously (in parallel) with the rest of your page. Normally if you include two or three scripts in your page, the browser will wait for them to be executed before your page is shown.
jingoIn our opinion, the framework bias and technical limitations of current approaches to JavaScipt dependency management are deal breakers. Script Tag Append is able to properly attribute source code to its file resource, which keeps crucial tools like Firebug working for us, but Ajax and Eval guarantees dependency order. Why can't we have our cake and eat it too? Jingo was created with the goal of learning from both approaches and delivering the best of both in a single, lightweight, framework-agnostic package. We think we've succeeded in doing so, and we hope your project will benefit from the fruits of our labor.
and of course
YUI LoaderThe YUI Loader Utility is a client-side JavaScript component that allows you to load specific YUI components and their dependencies into your page via script. YUI Loader can operate as a holistic solution by loading all of your necessary YUI components, or it can be used to add one or more components to a page on which some YUI content already exists
and
Google Libraries APIThe Libraries API is a content distribution network and loading architecture for the most popular, open-source JavaScript libraries. Using the Google API Loader's google.load() method increases your application's speed while providing access to a growing list of the most popular, open-source JavaScript libraries, including:
and paid, but relatively cheap and interesting (but not really an option):
Amazon CloudFrontAmazon CloudFront is a web service for content delivery. It integrates with other Amazon Web Services to give developers and businesses an easy way to distribute content to end users with low latency, high data transfer speeds, and no commitments.
But I'm looking for a more stand-aloney solution even though the CDNs make a lot of sense for a lot of reasons.
There are more out there but these look to be the most recent, professional and maintained solutions.
It is a simple problem. Very simple libraries. A huge opportunity in advancing how the web works. None of them have it quite right and the browser is the limitation. They are all workarounds using simple components and browser conditionals.
There are two things I see missing in modern browsers (well two main things) lzma decoding and the ecmascript (javascript) execution implementation model. HTML5 and ecma5 address some of the issues, but in a standards re-definitions band-aidy kind of way.
I think it is near time to rethink the browser altogether. I'm sure I'm not the only one.
Interestingly, the only browser I have seen that supports lzma is elinks (a text browser). Nobody has tried to implement it server-side, and I think I see why, but I also think it can be done (by pre-compression if need be, though there are several ways to skin the cat)
Edit: it occurs to me that perhaps it is no accident I have presented these two ideas side-by-side. Perhaps the implementation of one is the solution to the other. (i.e. lzma compression, done well, could remove the script overhead bottleneck)
(wow, this thread has been viewed nearly 30000 times!!!)