我读过一些人说如果你结合然后缩小会有问题,你应该总是缩小然后合并(参见例如this question的评论.)但是,我从未见过这些问题的例子.或者自己遇到过他们.我也找不到YUI开发人员的任何官方说明最佳做法.
最佳答案
由于压缩算法的工作方式,组合然后缩小应该给我们最好的结果.
GZIP压缩
目前最流行的压缩算法是GZIP.它是如何工作的,它试图引用一个字符(或一个字符串)的位置,并定义这些字符可以重复多少.
我们假设您要压缩的字符串是:AABAB
它会被算法打破:
[0,0]A - Last occurrence of A was 0 characters ago,and its length was 0
[1,1]A - Last occurrence of A was 1 characters ago,and its length was 1 char
[0,0]B - Last occurrence of B was 0 characters ago,and its length was 0
[2,2]AB - Here comes the interesting part. We will only reference the set of
characters,not occurrence of each character. The last occurrence of AB
was 2 characters ago,and the length of this set of characters is 2.
缩小
知道这一点,我们可以看到,如果我们重新使用相同的字符,例如函数参数名称,那么对算法很重要 – 这正是缩小所做的事情(参见:closure compiler).如果给出这两个功能:
function hello(name,surname) {
alert('Welcome '+ name + ' ' + surname);
}
function logout( id ) {
alert('Logged out '+ id);
}
输出版本将如下:
function hello(a,b){alert("Welcome "+a+" "+b)}
function logout(a){alert("Logged out "+a)};
这将使算法更有效.现在这是一个非常简单的例子,但是在更大的代码块中,变量甚至函数名称可以用它们的缩小版本替换,服务的顺序将开始变得重要.
更多来源: