代码之家  ›  专栏  ›  技术社区  ›  Aaronaught

脚本/样式表:在本地合并还是使用cdn?

  •  9
  • Aaronaught  · 技术社区  · 15 年前

    很明显,我可以自己做一些有限的测试,但我希望听到一些人在至少中等规模的网站上有实际经验。

    每个“前10”列表中用于优化站点/带宽的两个项目是:

    • 将尽可能多的JS和CSS合并到一个文件中(以减少往返);以及
    • 使用内容交付网络(以节省带宽/加快下载速度)。

    现在,你可以在谷歌或微软的cdn(或两者)上找到几乎所有重要的脚本。您甚至可以找到一些相当重的项目,如jquery themeroller包。与AmazonS3这样的私人cdn帐户相比,使用这些cdn的一个主要优势是,许多访问者已经从其他网站缓存了这些脚本。即使他们没有,也很难打败像谷歌这样的网站。

    因此,假设我想使用这些公开的cdn,而不是为个人cdn帐户支付额外的费用,以获得更好、更差或相同的性能。另外,假设我使用的是一组JS/CSS文件,它们都在这些公共cdn上:jquery、jquery ui、一个主题、jquery工具,也许还有其他一些。除了这些之外,我可能还使用了一些在公共cdn上不可用的脚本,比如supervish和jquery.approach和hoverintent。真的很普通。我似乎有两个互斥的选择:

    • 有关上面列出的脚本,请参阅公共cdn。优点是我可以使用其他人的带宽,并利用其中一些脚本的流行性。缺点是客户机必须对所有这些文件进行不少于7次的往返(4个单独的JS、1个CSS和1个用于合并/缩小本地内容的CSS和JS)。或者…
    • 把所有东西塞进两个单一的小型文件(一个用于JS,一个用于CSS),然后在我自己的Web服务器上为所有东西服务。优点是只有两次往返(至少节省66%的费用)。当然,缺点是现在我必须 许多的 我自己做的更多。

    这似乎是一个艰难的选择,我认为真正理解哪一个更有效(“更好”是客户加载时间和总体用户体验的函数)的唯一方法是将它放在野外,看看会发生什么。

    所以以前有人必须做出这样的选择吗?如果有,你选择了什么?为什么?结果如何?或者,如果有人试图在一个孤立的环境中处理测试的任务,那么您是如何进行的,结果是什么?

    另一方面,这些都是描述一个“Web应用”类型的站点——换句话说,不是很重的媒体,但可能包含大量的样式和脚本,这些样式和脚本实际上占了页面大小的很大一部分。因此,我认为这不仅仅是一个智力练习。

    3 回复  |  直到 14 年前
        1
  •  4
  •   DrewM    15 年前

    退房 Focus.com 萤火虫

    我们采取了混合方法。我们把jquery从Google上拉下来,其余的CSS和JS被合并/缩小,并由S3提供服务。我们通过构建过程自动化了组合/缩小步骤,并且每个版本都部署在自己的(编号的)目录下,以允许浏览器主动缓存我们的资源。

    我们选择把jquery从Google上拉下来,以节省40K点击量,因为我们的网站的代码更新频率很高(大约每两周一次)。尽管如此,在我们发布之前,我们对不同的配置进行了大量的测试,没有发现性能上的显著差异。

        2
  •  0
  •   Darrell Brogdon    15 年前

    我想一切都取决于你所期望的交通状况。如果你每月得到大量的Uniques,那么至少有一个经济激励,就是使用谷歌或微软来服务JS/CSS,让他们承担带宽成本。

        3
  •  0
  •   rboarman    14 年前

    微软在其cdn上托管了大量jquery和相关文件。 here .