我读过一些人说如果你合并然后缩小可能会出现问题,并且你应该总是先缩小然后合并(例如参见关于这个问题的评论。)但是,我从来没有见过这些问题的例子是或遇到过他们自己。我也找不到任何来自 YUI 开发人员的官方说明最佳实践是什么。
问问题
1567 次
2 回答
9
由于压缩算法的工作方式,组合然后缩小应该会给我们最好的结果。
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.
缩小
知道了这一点,我们可以看到,如果我们重新使用与函数参数名称相同的字符,这对算法很重要——这正是缩小所做的(参见:闭包编译器)。如果给定这两个函数:
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)};
这将使算法更有效。现在这是一个非常简化的示例,但是在更大的代码块中,变量甚至函数名称可以被它们的缩小版本替换,执行顺序将开始变得重要。
更多来源:
于 2013-11-05T21:36:48.987 回答
3
合并然后缩小。如果在多个文件中找到相同的值,则所有出现的地方都将被缩小的表示替换。如果先缩小,那么这将是不可能的,从而导致版本不够优化。
于 2013-11-05T21:30:52.527 回答