将Javascript / CSS组合成一个或两个文件以获得更好的优化

时间:2011-01-24 18:35:29

标签: c# asp.net performance optimization minify

我目前正在开发一个c#应用程序,它在后台异步最小化和组合javascript / css,以加载到已完成的页面。创建组合的最小化文件后,它们将保存到磁盘上,对页面的所有后续请求都将加载此文件。

这样做的原因是为了帮助提高页面的性能。我有一个问题,如果组合文件很大,例如200 kb怎么办?如果是这种情况并且有2个单独的http请求,那么组合成2个文件会更好吗?该文件将被gzip压缩和缓存。

3 个答案:

答案 0 :(得分:8)

嗯,有两种主要的思想流派。

首先,尽可能减少HTTP请求的数量。这可以说将所有 CSS文件减少到一个怪物。最好下载400kb一次,而不是多个50kb文件。 (和JS一样)。

另一种是在必要时进行组合,但不能再进一步。如果您只有网站的一个部分需要100kb的CSS,那么没有理由为您的用户减慢网站的其余部分。对于JS来说尤其如此,因为有很多站点在每个页面上都包含jQuery(例如),因为10%的站点使用它。

我对它的看法是两者的结合。如果我在大约50%的网站上使用代码或更多,我将其包含在“主”文件中。如果代码很小(小于5kb或10kb),我将其包含在主文件中。否则我将它拆分为单独的文件。

任何这一切的全部原因是为了改善用户体验。你可以做一个巨大的蛮力,并在每个页面加载2个相应的文件中加载所有的css和JS(确定它将被缓存)。但是,如果着陆页不需要该代码的50%,那么您将不必要地以最大的影响减慢页面速度。

这就是为什么我认为解决这个问题的最佳方法是让人类分析情况。他们可以寻找重复和抽象。他们可以查看页面/站点的需求并确定最佳方案。除非你想让你的程序做到这一点(这很难),否则它不会给出最佳结果(但是再次,好的和好的之间存在差异)......

无论如何,这是我的0.02美元......

答案 1 :(得分:3)

Google的documentation about page speed建议如下:

  

<强> Combine external JavaScript

     

<强>推荐

     

以最佳方式对文件进行分区。以下是在生产中组合JavaScript文件的一些经验法则:

     
      
  • 将JavaScript分区为2个文件:   一个包含最小代码的JS   需要在启动时呈现页面;   和一个包含代码的JS文件   在页面加载之前不需要   已经完成。
  •   
  • 提供少量JavaScript   文档<head>中的文件为   可能,并保持那些的大小   文件至少。
  •   
  • 提供JavaScript   一个很少访问的组件   自己的文件。
  •   
  • 仅在提供文件时   该组件是由用户请求的。   对于少量的JavaScript代码   不应该缓存,考虑内联   HTML页面中的JavaScript   本身。
  •   
     

Combine external CSS

     

<强>推荐

     
      
  • 将CSS分为两个文件:一个CSS文件,包含启动时呈现页面所需的最少代码;和一个CSS文件,其中包含在页面加载完成之前不需要的代码。
  •   
  • 在自己的文件中提供很少访问过的组件的CSS。仅在用户请求该组件时提供文件。
  •   
  • 对于不应缓存的CSS,请考虑将其内联。
  •   
  • 请勿使用CSS文件中的CSS @import。
  •   

答案 2 :(得分:2)

最好的方法是减少文件数量,这是因为每个域名只能同时下载__请求。因此,如果您将其分成两个请求,那么您使用的分配数量超出了您的需求。

总的来说,您确实希望减少请求总数。