【 以下文字转载自 Google 讨论区 】
发信人: modico (modico), 信区: Google
标 题: gmail client code review,part 7
发信站: 水木社区 (Fri Oct 20 14:30:42 2006), 站内
谈谈混淆器。google的这部分JS代码经过了混淆,就是函数或变量名都用简短的无意义名称取代。混淆的范围是整个应用,而不是单个文件。这个做法是一石二鸟,既一定程度保护了代码知识,又大大减小了用户需要下载的数据量。以君子之腹看混淆,是由于后者的因素;以小人之心看混淆,是前者的因素;以亦正亦邪的观点看,两者都有。
就说减小数据量吧,这个算法里有一点,我不知道google的混淆器是否具备,看起来像是有的,就是短名称的分配不是按从头到尾的顺序分配的,因为要能最大限度的减小数据量,必须综合考虑长名称的出现频率以及长名称的长度,要将所有长名按(出现次数×长度)的值倒序排列,值越大的分配越短的名称。
_,$,a-z,A-Z;
_ + 0-9,_,$,a-z,A-Z;
$ + 0-9,_,$,a-z,A-Z;
a + 0-9,_,$,a-z,A-Z;
...
基本上在2个字符范围内可以替换完成,因为算起来可以有54个单字符短名,54×64=3456个双字符短名,共3510个短名, 这只是说在单个scope里可用的数量,如单个window里,单个函数里,单个对象里...
--
修改:modico FROM 221.218.167.*
FROM 218.249.84.*