我像往常一样浏览网页,想查看Bing的源代码,因为我很好奇想知道他们使用了什么来使他们的图片淡入。但是我被以下这行代码所震惊:
天啊!这太长了!
这让我想知道是否有任何优势来混淆您的(X)HTML、CSS和JavaScript像这样?也许可以减少文件大小吗?
编辑:翻看了一些资料后,我意识到这是一种普遍的做法。以前从未从缩小文件大小的角度考虑过这个问题!
我像往常一样浏览网页,想查看Bing的源代码,因为我很好奇想知道他们使用了什么来使他们的图片淡入。但是我被以下这行代码所震惊:
天啊!这太长了!
这让我想知道是否有任何优势来混淆您的(X)HTML、CSS和JavaScript像这样?也许可以减少文件大小吗?
编辑:翻看了一些资料后,我意识到这是一种普遍的做法。以前从未从缩小文件大小的角度考虑过这个问题!
他们并没有混淆代码,而是进行缩小以减少每天数百万次请求所使用的带宽。
JavaScript和CSS的缩小目标始终是保留代码的操作特性,同时减少其总字节占用量(无论是原始术语还是在gzip压缩后,因为大多数从生产Web服务器提供的JavaScript和CSS都会作为HTTP协议的一部分被gzip压缩)。
您可能还有兴趣阅读Yahoo!用户界面博客文章,标题为"Minification v. Obfuscation"。
代码混淆的两个主要原因:
减小文件总大小(如你提到的那样)如果你用'C'替换一个名为'CallThisFunctionAndReturnAnArray'的函数,则可以在文件中节省大量字符。
保护知识产权——虽然这是否切实可行是有争议的,但这是常见的理由。您可以通过好的工具或者您本身聪明来避免这一点。
文件大小肯定是一个优点,例如Gmail不仅可以压缩其内容,而且还可以执行此操作。
这样做确实有优势。但需要注意的是,没有必要一直以这种方式编写代码。相反,在完成某些操作(并且以易读的形式编写)后,使用压缩工具来删除不必要的空格等内容。对于较大的文件,这可以极大地减少加载时间。
只有在大型模块上才能减小大小,而且仅仅是为了减小大小。使用gzip可以获得更大的收益。
如果您使用任何第三方代码,当您进行缩小时可能需要保留其版权/许可注释。人们经常忘记这样做。您可能还希望保留自己的版权注释。
是的,文件大小缩减。
是的。减小文件大小不仅可以减少下载时间,还可以减少解析时间,在某些浏览器上非常有用(特别是那个可恶的IE6)。
这可能需要重新标记为缩小。
我会区分减小文件大小的优化和意图防止(或至少使逆向工程难以进行)的混淆。例如,谷歌有一个“编译器”,可以扩展JavaScript以包括一些高级类型系统等;然后将这个扩展代码“编译”成常规的JavaScript。显然,以优化的方式创建此生成的代码是有意义的——没有必要使其可维护。