用过flex的童鞋应该都用过或了解过rsl…
它可以在我们电脑硬盘里缓存经验证的swz共享库文件…
当你的项目使用到相应的库时..就不需要重新下载..
并且不怕受浏览器清除缓存影响..因为fp会将它们存在硬盘上..

现在我们在cs5中也可以应用rsl技术…
cs5中新增了fl.rsl包..
我们可以使用它进行swf库(未经验证~)或swz库(经验证)的加载…
下面的例子中..我们尝试加载flex 3.5 sdk中的framework_3.5.0.12683.swz..
并调用mx.formatters::DateFormatter进行对日期的格式化操作..
当打开flash后你可能会看到加载进度..
或者什么都看不到就已经提示加载成功(因为你可能曾经加载过framework_3.5.0.12683.swz,而且fp已经帮你缓存于硬盘当中…)
注:正常浏览需要fp10.1~只因fl.rsl包需要fp10.1支持(在flash上点击右键可查看你的fp版本)
刚刚重装了fp9..依然可以正常访问..验证中..

这里有几点需要说明一下…

1.当你只加载swf的库时,直接使用RSLInfo即可..代码如下

//这里的this为文档类,不传留空亦可~
var rsl:RSLPreloader = new RSLPreloader(this);
var info:RSLInfo = new RSLInfo();
//这里的第二个参数可设置一个跨域文件路径~下方的加载SWZ的代码同理
info.addEntry("framework_3.5.0.12683.swf");

rsl.addRSLInfo(info);
rsl.start();

2.当你需要加载SWZ的库时..需要使用SWZInfo.并且需要注意的时..SWZInfo的构造函数中..需在提供你请求加载的SWZ的”摘要(digest)”
该digest将验证你下载的SWZ文件是否正确~~
而digest是一个 SHA-256 哈希字符串值..
如果你使用flex的话可以直接使用SHA256.computeDigest(bytes)获取…
另外提醒一下..
这里的bytes并不是framework_3.5.0.12683.swz的bytes~而是framework_3.5.0.12683.swf的bytes~
这里很重要喔~~(ps:试了很久才试出来~汗一个~帮助没写清楚)..
那么详细代码如下

var rsl:RSLPreloader = new RSLPreloader(this);
//3c82b2a2455b252b8595fd0113249aa19d7e8bdd516b2f6ea43244aa6d543d58
//为framework_3.5.0.12683.swf的SHA-256值~
var info:SWZInfo = new SWZInfo("3c82b2a2455b252b8595fd0113249aa19d7e8bdd516b2f6ea43244aa6d543d58");
info.addEntry("framework_3.5.0.12683.swz");
rsl.addRSLInfo(info);
rsl.start();

3.当我们加载SWZ时…fp会优先用摘要(digest)从你的电脑硬盘里查找有没有相应的swz文件..
如果你确保swz文件存在…你甚至可以这么写..

var rsl:RSLPreloader = new RSLPreloader(this);
var info:SWZInfo = new SWZInfo("3c82b2a2455b252b8595fd0113249aa19d7e8bdd516b2f6ea43244aa6d543d58");
info.addEntry("");
rsl.addRSLInfo(info);
rsl.start();

FP将一样返回加载成功…
下面是上边的flash的完整代码…
直接往CS5里贴即可…

import fl.rsl.*;
import fl.rsl.RSLPreloader;
import fl.events.*;
import flash.utils.getDefinitionByName;
import flash.text.TextField;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
//code by l4cd.net

var button:SimpleButton;
button.enabled = false;
button.alpha = 0.5;
button.addEventListener(MouseEvent.CLICK,_test);
function _test(e:MouseEvent):void
{
	if(!button.enabled)return;
	var DateFormatter:Class = getDefinitionByName("mx.formatters::DateFormatter") as Class;
	var format:Object = new DateFormatter();
	format.formatString = "YYYY年MM月DD日 HH/NN/SS";

	var txt:String = 'Class: mx.formatters::DateFormatter';
	txt += '\nFormatString: YYYY年MM月DD日 HH/NN/SS';
	txt += "\nOutput: "+format.format(new Date());
	txt += "\nby: l4cd.net";
	output.text = txt;
}

var output:TextField;
output.background = true;
output.backgroundColor = 0xeeeeee;

var rsl:RSLPreloader = new RSLPreloader(this);
var info:SWZInfo = new SWZInfo("3c82b2a2455b252b8595fd0113249aa19d7e8bdd516b2f6ea43244aa6d543d58");
//这里的地址改成相应的地址~~
info.addEntry("http://www.l4cd.net/rsl/framework_3.5.0.12683.swz","http://www.l4cd.net/crossdomain.xml");
rsl.addRSLInfo(info);
rsl.addEventListener(RSLEvent.RSL_LOAD_COMPLETE,_rslComplete);
rsl.addEventListener(RSLEvent.RSL_PROGRESS,_rslProgress);
rsl.addEventListener(RSLErrorEvent.RSL_LOAD_FAILED,_rslFailed);
rsl.start();
function _rslProgress(e:RSLEvent):void
{
	var txt:String = "Framework_3.5.0.12683.swz loading...";
	txt += '\n	.rslsLoaded = ' + e.rslsLoaded;
	txt += '\n	.rslsFailed = ' + e.rslsFailed;
	txt += '\n	.rslsTotal = ' + e.rslsTotal;
	txt += '\n	.bytesLoaded = ' + e.bytesLoaded;
	txt += '\n	.bytesTotal = ' + e.bytesTotal;
	output.text = txt;
}
function _rslComplete(e:RSLEvent):void
{
	button.enabled = true;
	button.alpha = 1;
	output.text = "framework_3.5.0.12683.swz loaded!\n点下面的按钮进行测试!";
}
function _rslFailed(e:RSLErrorEvent):void
{
	output.text = "Framework_3.5.0.12683.swz\n"+e;
}