最近参与一个虚拟社区的项目,我制作了其中的农场游戏和视频会议应用模块,整个项目有多个Flex Project,包括主程、公共库、各个功能模块等。因为我参与的比较晚,对该项目的开发模式不是很了解,当然也因为我做的那两个应用独立性较强,所以我使用的独立的Flex Project来构建了那两个应用。
项目使用的是RSL(Runtime shared library)来链接外部库,所以我在做那两个应用的时候同样使用了RSL,初期一切正常,项目上线后,客服人员偶尔会收到客户的电话说打不开农场的情况,农场的位置出现“RSL Error 1 of 1”,在下方有一段文字“Error #2032: 流错误。 URL: http://www.xxx.com/XXX.swf/[[DYNAMIC]]/framework_3.2.0.3958.swf”。
出现这个问题的一段时间,我都比较困惑,当时自己找到了该问题的原因,并想到了一个解决方案。
先简单介绍一下RSL,RSL说白了是把多个Project创建类编译到多个swf中,这里面包括类库项目、Flex的框架库(framework_xxx.swf),这样就可以把这些swf中包含的类进行多个项目共享,在客户端加载的时候只需要加载一份就可以了(如果不使用RSL,所有用到的类会编译进一个swf中,如果有多个这样的swf,每个里面都包含一部分重复的类,增加了用户的下载量)。只有一个Project的情况下,使用RSL的效果并不明显,因为生成的swf对于所有用到的其他swf共享库都需要加载;而如果有多个Project,优势就会显现出来,第一个swf加载完成共享库后,之后的swf就不需要再加载了,可以提高访问速度。<