Slowloris: high-performance HTML5 UIs
github.com
github.com
(Thanks, Captain Hindsight!)
Thanks for the heads up!
Anyway, at least for modern MVC development, I've gotten Blossom booting in a Worker, and I've worked through how to split it up so that it's still a "normal" MVC app, but event handling, animation, and rendering is 100% on the UI thread, and all business logic, model layer storage, network communication, and application state management is on the Application/Worker thread.
My primary goal is to make Blossom's requestAnimationFrame()-driven, canvas-based UI thread rock solid at 60fps, even for JavaScript-driven animations, and to place all potentially long work (> than 2-3 ms) in the Application/Worker thread.
This technique is applicable in all modern browsers (IE 10, Chrome, Safari, mobile Safari/iOS, Chrome on Android, and Firefox), and of course in IE 6-9 with Chrome Frame installed.
This approach will also use up to three CPU cores (the third in Blossom is invoked by the automatic application of hardware-accelerated CSS transitions in Blossom, which are executed by the browser on their own thread as well), and even more cores can become involved when plugins are added to the scheme, in their own dedicated workers.
1: http://caniuse.com/webworkers
2: http://stackoverflow.com/questions/7523745/why-was-html5-web...
3: http://code.google.com/p/android/issues/detail?id=10004#c7
They work fine, e.g. on the Nexus 7.
https://github.com/rothlab/chromozoom/blob/master/js/CustomT...
and the top 135 lines of
https://github.com/rothlab/chromozoom/blob/master/js/CustomT...
show how we do it.
https://github.com/bgrohman/lazy-worker
With Slowloris, I'd be concerned about having to write my code in strings that get evaled. @peterhunt, what do you think about using lazy-worker as a shim in Slowloris?
https://github.com/dmotz/commune.js
It takes a different approach and avoids using eval.