javascript - 服务 js 库 : better performance from google code or using asset packager?

标签 javascript jquery content-delivery-network

我正在开发一个使用大型 javascript 库(例如 jquery UI )的 Rails 应用程序,而且我还有一些自己的 javascript 文件。我正在使用 asset packager打包我自己的javascript。我正在考虑提供这些文件的两种方式:

  1. 从 Google Code 链接到 jQuery 库,如 http://code.google.com/apis/ajaxlibs/documentation/#jquery 中所述,并使用 asset packager 单独打包并提供我的 javascript 文件。

  2. 我自己托管 jquery 库,并将它们与我自己的 javascript 打包成一个大的合并 javascript 文件。

我的托管解决方案当然不会击败 Google 的内容分发网络,所以一开始我假设最终用户会通过选项 #1 体验到更快的页面加载。

但是,我也想到,如果我自己为他们提供服务,用户只需要发出一个请求来获取合并的 javascript(而不是一个用于我的合并 javascript,另一个用于由 google 服务的库)。

哪种方法将提供最佳的最终用户体验(大概以更快的加载时间的形式?)

最佳答案

我会说“视情况而定”,但在大多数情况下,对于面向互联网的网站,我会选择选项 #1(Google 托管)。对于内部网,出于多种原因,我会在内部托管所有内容,但这超出了您的问题范围。

总体而言,有几件事需要考虑:

  • 除非正确缓存,否则您的用户不会下载文件,除非强制刷新。
  • Google 的服务器比你多 :) 多得多,而且它们的地理位置可以最好地满足任何给定的请求,我猜你的主机来自一个或几个位置。
  • 浏览器并行下载,即使它按顺序执行脚本,因此它会同时从您和谷歌下载,从而提高吞吐量。
  • 其他 网站使用 google 托管 jQuery(您现在正在使用一个网站),如果用户访问过其中任何一个,他们已经缓存了文件,这意味着没有发出请求。

您可以将所有文件放在一个文件中,但是您必须考虑一些事情的重量:

  • 一个文件有多大,当您更改脚本中的某些内容时,您的用户是否需要重新下载整个文件?
  • 多次请求(和 DNS 查找)是否比该文件的下载时间更便宜
  • 您是否为带宽付费? :)

根据自定义代码的百分比和框架代码的多少,Google 的 CDN 可以将大部分静态 js 流量从您的服务器上移走,使其可用于服务和做其他事情 (这对高流量站点来说是一个巨大的好处),并且当您更改脚本时(比新框架版本更常见)......客户端只会下载那个,而不是再次下载整个框架。

关于javascript - 服务 js 库 : better performance from google code or using asset packager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726321/

相关文章:

jquery - 垂直堆叠 div 的动态数量,然后在右侧 w。 CSS/JS

javascript - 如何在 SHADOWBOX 中为 div 声明 CSS 属性?

YSlow - 单击添加 CDN 有什么作用?

nginx - 在 Linux 服务器中设置 CDN

amazon-s3 - 为什么要随机化云存储/CDN 的文件名?

javascript - 从两个不同变量中的 Angular 日期范围 slider 返回日期输出

javascript - window.addEventListener 不工作但 window.onhashchange 工作?

javascript - Raphael 设置透明 png 不透明度丢失 alpha channel

javascript - React - componentDidUpdate() 无法找到由 render() 方法渲染的 DOM 对象

javascript - 单击选择所有单选按钮