我读过一些人说如果你结合然后缩小会有问题,你应该总是缩小然后合并(参见this question上的评论。)但是,我从未见过这些问题是我自己遇到或遇到的一个例子。我也找不到YUI开发人员的任何官方说明最佳做法。
答案 0 :(得分:9)
由于压缩算法的工作方式,组合然后缩小应该会给我们带来最好的结果。
目前最流行的压缩算法是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)};
这将使算法更有效。现在这是一个非常简单的例子,但是在更大的代码块中,变量甚至函数名称可以用它们的缩小版本替换,服务的顺序将开始变得重要。
更多来源:
答案 1 :(得分:3)
然后结合然后缩小。如果在多个文件中找到相同的值,则所有出现的内容将被缩小的表示替换。如果首先缩小,那么这将是不可能的,导致不太优化的版本。