哪个更好:公共javascript CDN或自托管组合javascript?

时间:2014-04-07 11:35:43

标签: javascript performance web browser-cache cdn

我的网页使用了几个javascript库,比如jquery,jquery-ui,下划线,主干和一些其他着名的jquery插件。

现在我面临两难困境,我可以:

  1. 使用托管所有这些库的公共CDN。如果用户使用相同的CDN访问了另一个站点,则脚本可能已被缓存。但由于每个库都是独立的,因此页面需要包含许多脚本标记,因此需要很多http请求。

  2. 将所有必需的脚本合并为一个(包括我自己的脚本文件)并将其托管在我自己的服务器上。只有一个请求,但我无法比CDN更快地提供脚本,我无法利用缓存。

  3. 根据您自己的经验,哪个更好?

    我想估计是否有足够的网站使用上述CDN(如果许多知名网站使用它们,那么脚本被缓存的概率很高),我该如何调查?我试过谷歌搜索脚本src属性,但似乎谷歌没有索引。

1 个答案:

答案 0 :(得分:6)

如果仅使用1-2个库,那么一个好的做法也包括CDN版本,并且回退到本地版本。这是大多数HTML样板/框架使用的惯例。例如

http://html5boilerplate.com/

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="//myserver/js/libs/jquery-1.8.3.min.js"><\/script>')</script>

但是,您使用了大量的库,因此可能存在依赖关系,并且页面上会有特定的顺序排列,其中一些可能不会出现在标准CDN上,因此您无论如何都必须包含一些来自服务器的javascripts。 因此,对于您的情况,更好的选择是将所有javascript代码良好地组合/版本化为1-2个文件。例如,一个用于库(通常不被触及),一个用于您自己的自定义代码(当您制作时缓存已被破坏)改变它。)