当页面加载速度是首要任务时,是使用最小、轻量级的 JavaScript 库(托管在 CDN 上)更好,还是使用 jQuery 之类的东西更好,托管在浏览器很可能已经加载的 Google 的 CDN 上?
编辑:我的问题真正归结为使用托管在 Google 的 CDN 上的 jQuery 的跨站点缓存效果是否超过了使用超轻型库(也在 CDN 上)的好处。
当页面加载速度是首要任务时,是使用最小、轻量级的 JavaScript 库(托管在 CDN 上)更好,还是使用 jQuery 之类的东西更好,托管在浏览器很可能已经加载的 Google 的 CDN 上?
编辑:我的问题真正归结为使用托管在 Google 的 CDN 上的 jQuery 的跨站点缓存效果是否超过了使用超轻型库(也在 CDN 上)的好处。
与目前查看它支持的功能和浏览器数量的任何其他 javascript 库相比,jQuery 并不重。
您可以在选择要在页面上使用的插件时考虑这个因素,因为它们是由不同的用户编写的,有些人可能会明智地考虑这个因素,或者有些人可能只是为了它而正确。
是的,如果您为 jQuery 使用 Google 之类的 CDN,则很可能该库必须由浏览器缓存,而且 Google 具有基于位置的服务器数量,因此您不必担心。
降低延迟
CDN 将您的静态内容分发到各种不同物理位置的服务器上。当用户的浏览器解析这些文件的 URL 时,他们的下载将自动以网络中最近的可用服务器为目标。
在 Google 的 AJAX 库 CDN 的情况下,这意味着任何不在您服务器附近的用户将能够比您强制他们从任意位置的服务器下载 jQuery 更快。与 Google 相媲美的 CDN 服务屈指可数,但免费的价格难以超越!仅此一项好处就可以决定问题,但还有更多。
增加并行度
为了避免不必要的服务器超载,浏览器限制了可以同时建立的连接数。根据哪个浏览器,此限制可能低至每个主机名两个连接。使用 Google AJAX 库 CDN 消除了对您网站的一个请求,允许并行下载更多本地内容。对于拥有六个并发连接浏览器的用户来说,这并没有太大的区别,但对于那些仍在运行只允许两个浏览器的用户来说,区别是显而易见的。
更好的缓存
使用 Google AJAX 库 CDN 的潜在最大好处是您的用户可能根本不需要下载 jQuery。无论您的网站优化得多么好,如果您在本地托管 jQuery,那么您的用户必须至少下载一次。您的每个用户可能已经在他们的浏览器缓存中拥有数十个相同的 jQuery 副本,但是当他们访问您的站点时,这些 jQuery 副本会被忽略。
但是,当浏览器看到对 CDN 托管的 jQuery 副本的引用时,它会理解所有这些引用确实引用了完全相同的文件。由于所有这些 CDN 引用都指向完全相同的 URL,浏览器可以相信这些文件确实是相同的,并且不会浪费时间重新请求已缓存的文件。因此,浏览器能够使用缓存在磁盘上的单个副本,而不管 CDN 引用出现在哪个站点上。
这会产生强大的“跨站点缓存”效果,所有使用 CDN 的站点都可以从中受益。由于 Google 的 CDN 为文件提供标头,并试图将文件缓存长达一年,因此这种效果确实具有惊人的潜力。由于 Internet 上数以千计的流量最大的站点已经使用 Google CDN 来提供 jQuery,因此您的许多用户很可能在访问使用 CDN 的站点时永远不会对 jQuery 发出单个 HTTP 请求。即使有人使用相同的 Google 托管版本的 jQuery 访问数百个站点,他们也只需要下载一次!
最好使用最适合您的应用程序和开发团队需求的库。一个超轻量级的库可能会为你节省几百毫秒的加载时间,但如果你的团队在 jQuery/MooTools/Dojo 等方面有更多的经验,最终可能会花费你的开发时间。
如果仅仅使用二流工具来缩短加载时间而阻碍了新功能的实施和错误修复,那么您的用户最终会受到影响。