Just upped a little library I’ve been using with a client of mine. The problem they initially faced is that they wanted to embrace Flex, but were not happy with the heavy download that Flex imposes for even the simplest file. Using the framework RSL was definitely a big improvement, but ideally they wanted their regular visitors (numbering many millions a week) to have as minimally disruptive an experience as possible.
My solution to this was to build what I have called an RSL Seeder. The Seeder is a skinny AS3 shell that loads a second swf (the Seed). The Seed is compiled to use the RSLs you want to use, signed or unsigned. The Seeder sits hidden on high-traffic pages frequented by your regular visitors and when you are ready, or after a specific duration, the Seeder will load the seed, causing the RSLs it contains to be cached in browser or Flash Player depending on whether they are signed or not. The Seeder contains a basic UI to monitor RSL loading and download times and display the loaded swf. However this is for debugging and setup only and ultimately you should switch its debug mode to false, causing it to hide all UI and not waste any time with rendering.
Ultimately this allows you to ensure your regular visitors have the required RSLs cached in advance of launching any apps or components which use them. This is particularly useful now that the Flex 4 SDK comes with 7 signed RSLs of a non-trivial size, and given that every time you upgrade your application’s SDK you need fresh signed RSLs.
There is an introduction and spec in the docs folder for more information. I plan to improve the UI and display more data about the RSL loading as and when I have time. Please note that you will need to visit Adobe’s shameful Flash Player settings Storage panel and turn of its ability to cache RSLs as unless you have been living in the desert for the few months, you will most probably have the Flex 4 SDKs cached already. You can see the Seeder doing its business here. If nothing happens, your Player has the RSLs already cached and you need to turn its use of RSLs off.
