快速业务通道

Apparat框架优化你的Flas*****

作者 凌众技术 来源 网页制作 浏览 发布时间 2012-03-08
(inline)优化。优化字节码的命令格式是:

tdsi -i input.swf -o output.swf

去除debug信息

Stripper命令可以去除SWF中所有的debug信息,并且该移除方式是安全的,即不会产生side effect,比如代码:

trace("the next element is: " + iter.next());

经过Stripper之后会变成:

(iter.next());

Stipper的命令格式是:

stripper -i input.swf -o output.swf

压缩SWF

Reducer命令可以对嵌入在SWF中的PNG图片进行JPEG有损压缩,通常对PNG图片进行100%品质的JPEG压缩还能节省一定的文件存储空间。该命令中有参数-q可以来设置压缩质量,1.0表示最高的压缩品质,0.0表示最低的压缩品质。

reducer -i input.swf -o output.swf -q 0.8

如果Reducer通过环境变量能找到7-zip, Reducer将会利用7-zip做进一步的压缩,那么即使SWF中不包含图片我们也能从此命令中获得一些优化的余地,需要说明的是,目前此功能只能作用于SWF,对SWC文件无效。

Adobe使用Deflate压缩算法对SWF进行压缩,通过Reducer可以采用更先进的LZMA压缩算法,由于Flash Player不认识LZMA,所以经过LZMA压缩后的SWF被嵌入在另一个新的SWF中,新的SWF作为一个壳包含了原有的SWF以及一个运行时解码器,目前这个解码器大概在5KB左右。使用LZMA压缩也可以看做是做了(较弱的)代码混淆。

在使用Reducer命令时加上参数-l可以启用LZMA压缩:

reducer -i input.swf -o output.swf -l

除了压缩图片,Reducer还对代码进行了合并,当链接外部的SWC时,每一个ABC文件都拥有一个常量池,Reducer能把所有的常量池合并成一个,并且它还对常量进行了排序,这样频繁使用的常量会具有更小的开销。

经过我的测试与实践,使用Reducer过程中有几点需要注意:

  1. 使用JPEG压缩后的Flash可能在低版本的Flash Player上呈现异样的色调,所以压缩后需要在低版本的Flash Player上进行检测。
  2. 启用LZMA很难达到文件尺寸的进一步减少,通常是增加了5KB,而且经过LZMA压缩的SWF只能运行的Flash Player 10及其以上版本上。

其它

以上3个命令是主要是针对SWF,SWC做进一步的优化,包括程序执行时间的优化,图片尺寸的优化,SWF存储空间的优化,以及debug信息的清除。Apparat还包含其它一些有趣的功能,比如dump命令用来分析SWF中的标签以及输出UML图,jitb命令可以把SWF转换成Java字节码从而运行在JVM上(还在完善当中)。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号