11

我像往常一样在网上冲浪,我想看看Bing的源代码,因为我很好奇,想知道他们用什么来使他们的图像淡入。我很惊讶只能通过以下行:

文字的圣墙!

这让我想知道像这样混淆你的 (X)HTML、CSS 和 JavaScript 是否有任何优势?也许要减小文件的大小?


编辑:环顾四周后,我意识到这是一种很常见的做法。以前从未从缩小的角度看过它!

4

11 回答 11

31

他们没有混淆。他们正在缩小以减少他们每天看到的数百万个请求所使用的带宽。

JavaScript 和 CSS 压缩的目标始终是保持代码的操作质量,同时减少其整体字节占用量(无论是在原始术语中还是在 gzip 之后,因为从生产 Web 服务器提供的大多数 JavaScript 和 CSS 都是作为 HTTP 协议的一部分进行 gzip 的)。

您可能也有兴趣阅读 Yahoo! 用户界面博客文章,标题为“Minification v. Obfuscation”

于 2009-07-01T18:04:23.827 回答
7

混淆代码的两个主要原因:

  • 减少文件的总大小(就像你提到的那样)如果你用'C'替换一个名为'CallThisFunctionAndReturnAnArray'的函数 - 你已经在文件中保存了很多字符。

  • 保护知识产权——虽然这是否现实值得商榷,但这是这样做的普遍理由。你可以用好的工具来解决这个问题,或者如果你真的很聪明。

于 2009-07-01T18:04:06.790 回答
4

文件大小肯定会带来好处,例如 Gmail 本身不仅会这样做,还会压缩其内容。

于 2009-07-01T18:03:30.970 回答
2

这绝对有优势。不过,有一些重要的事情需要注意。没有理由实际编写这样的代码。相反,在您完成某事(并以良好可读的形式编写)之后,使用缩小器删除不需要的空白等。对于较大的文件,这可以大大减少加载时间。

于 2009-07-01T18:05:08.333 回答
2

我会回答,在这些情况下,“混淆”不是目标,而是带宽。如果您以这样的速度提供可缓存的内容,从而减少主页大小将是有益的,那么这样是有意义的。

至于混淆以避开窥探的眼睛-不。不要那样做。

于 2009-07-01T18:05:37.160 回答
2

仅用于减小尺寸,并且仅用于大型模块。使用 gzip 可以获得更大的收益。

如果您使用任何第三方代码,您可能需要在缩小时保留其版权/许可注释不变。人们经常忘记这样做。您可能也希望保留自己的版权评论。

于 2009-07-01T18:19:14.643 回答
1

是的,文件大小减小。

于 2009-07-01T18:02:32.923 回答
1

是的。减小文件大小不仅可以减少下载时间,还可以减少解析时间,这在某些浏览器(尤其是恶魔般的 IE6)上非常有用。

这可能需要重新标记缩小。

于 2009-07-01T18:04:41.470 回答
1

我将在优化以减少文件大小和混淆以防止(或至少使硬)逆向工程的预期目的之间进行区分。此外,例如 google 有一个“编译器”,它可以扩展 JavaScript 以包含一些高级类型系统等;然后这个扩展代码被“编译”成常规的 JavaScript。显然,以优化的方式创建这个生成的代码是有意义的——没有必要让它可维护。

于 2009-07-01T18:06:05.867 回答
1

我敢打赌,他们这样做的主要原因是为了减小文件大小。较小的文件使页面加载速度更快。

混淆不是那么重要。此外,它会使调试变得很痛苦,具体取决于您的操作方式。

速度就是搜索的一切。

于 2009-07-01T18:06:16.007 回答
1

这让我想知道像这样混淆你的 (X)HTML、CSS 和 Javascript 是否有任何优势?也许要减小文件的大小?

混淆与另一种用于 Javascript 文件的常用技术(缩小)略有不同。缩小在 Javascript 中很常见,因为它减小了文件大小,而大文件可以显着减小它们的大小(因为大型 Javascript 文件通常包含大量注释、换行符、不需要的空格等,可以剥离这些文件以减小剧本)。

另一方面,混淆更多地是通过将变量名称更改为其他晦涩难懂的变量名称,或者从 Javascript 文件中删除含义,从而向其他人隐藏您的代码。但是,这样做通常会减小文件大小,因为变量名称通常比原始文件中的名称短得多。这是一种常见的技术,可以让其他人更难简单地复制代码,并且更多地是为了保护与其他平台相比显然更容易访问的代码。

同时进行缩小和混淆对您的脚本有利,因为它们会减小您的 Javascript 文件的大小,从而减少加载页面所需的时间,并且还会使其他人更难对其进行逆向工程(如果这对您来说是个问题)代码)。

但是:请注意,这并不是万无一失的 - 存在某些工具可以更轻松地对混淆代码进行逆向工程,因此对于真正想查看脚本如何工作的其他人来说,它并不能 100% 安全。

于 2009-07-01T18:06:33.977 回答