减小Javascript和CSS文件大小的最佳方法是什么?

时间:2020-03-05 18:54:12  来源:igfitidea点击:

当处理大型和/或者许多Javascript和CSS文件时,减小文件大小的最佳方法是什么?

解决方案

回答

Minify似乎是缩小Javascript的最简单方法之一。

在Web服务器级别启用zip也有帮助。

回答

对于javascript,我使用Dean Edwards的Javascript Packer。它已被移植到.NET,perl,php4,php5,WSH,甚至还有一个aptana插件。

Javascript打包有几种风格,有些只是去掉注释和空格,有些则将变量名更改得简洁明了,还有一些,我什至不知道它们的作用,但是输出肯定很小。高端压缩通过使用eval()函数来工作,这给客户端带来了一些额外负担,因此,如果脚本特别复杂,或者我们要针对较慢的硬件进行设计,请记住这一点。 Javascript Packer为我们提供了要使用的压缩级别的选项。

对于CSS,最好的办法是去除空格和注释。幸运的是,这意味着我们可以使用单行功能来实现:

function compressCSS($css) {
    return
        preg_replace(
            array('@\s\s+@','@(\w+:)\s*([\w\s,#]+;?)@'),
            array(' ',''),
            str_replace(
                array("\r","\n","\t",' {','} ',';}'),
                array('','','','{','}','}'),
                preg_replace('@/\*[^*]*\*+([^/][^*]*\*+)*/@', '', $css)
            )
        )
    ;
}

尽管该功能和Javascript压缩程序将减少单个文件的文件大小,但要从站点获得最佳性能,我们还希望减少发出的HTTP请求的数量。每个Javascript和CSS文件都是一个单独的请求,因此将它们组合到一个文件中将获得最佳结果。我们可以尝试使用我在博客(http://spadgos.com/?p=32)上编写的程序/技术(无耻的自我插件),而不必尝试维护单个Bohemoth JS文件。

该程序基本上会读取一个"构建脚本"类型的文件,该文件将同时将多个Javascript和CSS文件组合并压缩为一个(每个)(如果需要,也可以多个)。有所有输出和显示所有文件的选项。那里有大量的文章,源可以免费获得。

回答

我建议不要压缩它们,而不是直接调整文件。大多数客户都支持它。

我认为我们会发现这更容易且同样有效。

Jeff的冒险之旅提供了更多详细信息。

回答

看到问题:最好的javascript压缩器

根据我们是否要gzipJavaScript文件,可能会更改压缩器的选择。 (如果我们也要使用gzip,则Packer不是最佳选择,但请参见上面的问题,以获取当前的最佳答案)

回答

Dojo Shrinksafe是使用真正的JS解释器的Javascript压缩器,因此不会破坏代码。其他脚本可以很好地工作,但是Shrinksafe是在构建脚本中使用的一个很好的工具,因为我们不必重新测试压缩脚本。

回答

除了使用服务器端压缩之外,使用智能编码是保持较低带宽成本的最佳方法。我们始终可以使用Dean Edward的Javascript Packer之类的工具,但是对于CSS,请花一些时间学习CSS速记。例如。使用:

background: #fff url(image.gif) no-repeat top left;

...代替:

background-color: #fff;
background-image: url(image.gif);
background-repeat: no-repeat;
background-position: top left;

另外,请使用CSS的级联性质。例如,如果我们知道站点将使用一个字体家族,则对body标记中的所有元素进行定义,如下所示:

body{font-family:arial;}

可以解决的另一件事是,将CSS和JavaScript包含为文件,而不是内联或者位于每个页面的开头。这样,服务器只需将它们提供给浏览器一次,然后该浏览器就会从缓存中移出。

包括Javascript

<script type="text/javascript" src="/scripts/loginChecker.js"></script>

包括CSS

<link rel="stylesheet" href="/css/myStyle.css" type="text/css" media="All" />

回答

Shrinksafe可能会有所帮助:http://shrinksafe.dojotoolkit.org/我们正在使用它,它做得很好。在打包Web应用程序时,我们从ant版本执行它。

回答

我将对http://www.codeplex.com/NCOptimizer上发布的ASP.Net中的新运行时优化器进行测试。

回答

帮助YUI Compressor提供一些很好的建议,说明如何调整脚本以实现更好的节省。

回答

YUI Compressor在压缩Javascript和CSS方面做得很好。

回答

YUI Compressor拥有我的投票权,原因很简单,它不只是对代码执行正则表达式转换,实际上还构建了类似于Java解释器的代码解析树,然后以这种方式对其进行压缩。通常对如何处理标识符压缩非常谨慎。

此外,它还具有CSS压缩模式,我还没玩过那么多。

回答

Google托管了一些预压缩的JavaScript库文件,我们可以将它们包含在自己的网站中。 Google不仅为此提供带宽,而且还基于大多数浏览器的文件缓存算法,如果用户已经从Google下载了该文件到另一个站点,则无需为站点再做一次。对于其中的90k + JS库来说,这是一个不错的奖励。

回答

压缩和缩小(删除空白)是一个开始。

此外:

  • 将所有JavaScript和CSS包含的内容合并到一个文件中。这样,浏览器可以在单个请求中将源下载到服务器。使这成为构建过程的一部分。
  • 使用cache-control http标头在Web服务器级别打开缓存。将有效期设置为较大的值(例如一年),这样浏览器将仅下载源一次。要允许将来进行编辑,请在查询字符串中包括一个版本号,如下所示:

&lt;脚本src =" my_js_file.js?1.2.0.1" type =" text / javascript"> &lt;/ script>

&lt;link rel =" stylesheet" type =" text / css" href =" my_css_file.css?3.1.0.926" />

回答

我很惊讶没有人建议将代码压缩。节省约50%!

回答

我知道CssTidy是最好的CSS优化器。它(可配置)剥离注释,消除空格,重写以使用提到的许多速记规则,等等。压缩结果也有帮助,就像其他人提到的那样。

压缩率非常高,它使我们不必担心文件大小,就可以使CSS大量注释。

不幸的是,这种级别的预处理与某些流行的" css hacks"以不可预测的(或者可预测的但不希望的)方式进行交互。有些工作有用,有些不需要,有些需要配置设置,这些设置可以减少对其他事物的压缩级别(尤其是注释)。

回答

尝试使用Boryi提供的网络压缩工具来压缩标准HTML文件(没有嵌入Java代码和CSS代码,但是可以链接或者导入),Javascript代码(以;结尾)和CSS代码。