接上一篇:
仔细说说Flash Player Update 3 Beta 3(含截图和下载)【1】
Flash Player Cache的概念不是flash player 9 update 3 beta 3才提出的,事实上在两三个月前就有过这方面的讨论了。这次Update 3将它和MovieStar一同宣传,可见它的重要性也不会低于MovieStar的冲击力。
如果说MovieStar是FlashPlayer在媒体播放方面的一个重大突破,那么Flash Player Cache可以算是Flex 应用程序部署的重大突破。
有什么好处?最直接的好处是
Flash Player Cache将极大的减小Flex SWF的体积!
想一想,现在编译一个Flex应用程序,至少也要100多kb。如果在应用程序中使用了大部分或全套Flex组件,SWF文件将超过500k大关。
我们每天可能要浏览数个Flex网站,每看一个Flex 程序,都要隐性的重复下载SWF所包含的Flex框架和组件。不仅浪费我们下载的时间和带宽,一次次重复初始化这些东西也让人有些不爽。
现在好了,Flash Player Cache功能会自动将这些框架和组件缓存起来,一旦客户访问我们的Flex程序(要经过一些设置),Flash Player Cache功能会自动查看本机Flash Player有没有缓存Flex程序中要求的框架和组件,如果缓存了,直接拿来使用。
注意,
不仅不需要下载,连初始化的时间也省了!效率极大提高!
一个原本120多Kb的Hello world Flex程序会瘦身到53kb!一个使用全部框架和组件的程序甚至会减少500kb大小!不仅减去多余的体重,也免掉了重复初始化的时间,没有毒副作用,不呕吐,不拉肚。还犹豫什么,赶快拿起xx订购吧!——flash减肥必备!
原理是什么?RSL认证机制和跨域缓存。RSL,就是runtime-shared-libraries,运行时共享库。这个大家不陌生,AS2时也有类似概念。就是把共用的脚本和资源,放在一个swf文件中,供多个SWF程序使用。
其实Flash Player Cache核心思想就是这个。所不同的是,有认证RSL和非认证RSL之分。只有Adobe认可的RSL才会被Flash Player Cache所共享,包括Flex框架,组件以及一些工具类,也不排除未来包括其他框架。我们自己的RSL是不能被Flash Player Cache所缓存的,只能存在浏览器的缓存中。
如何识别认证RSL和非认证RSL呢?如何识别不同版本的Flex框架呢?这些其实都是靠认证机制完成的。每个认证的RSL都有独一无二的加密哈希表示自己,根据这个就可以判断是否是同一版本Flex框架和组件,或者是否是官方认证过得RSL。这样,也就避免了潜在的篡改代码可能性。
跨域共享是什么?缓存的认证RSL是共享的,是跨域的(cross-domain的),任何网站的认证RSL都可以共用。
如果本机没有缓存Flex组件,Flash Player Cache不仅仅是访问目标SWF所在的网站来下载Flex框架和组件,而是根据目标SWF提供的加密哈希(SHA256 hash)到所有已下载的网站中去查找。
意思是,如果用户第一次访问kingda.org的一个flex swf,发现需要flex 3 moxie的框架和组件;那么它会根据加密哈希查看本机,发现访问
www.adobe.com时已经缓存了一个同样框架和组件,那么就会直接使用这个。