Answers:
使用外部CDN(例如Google)来托管jQuery有两个主要好处:
潜在的缺点:
另一个缺点:
使用CDN可使CDN的运营商跟踪网站访问者。这就是为什么他们不花钱的原因。
假设您只在乎性能,那么使用CDN来像这样在许多服务器之间分配依赖关系实际上就代表了带宽和延迟之间的平衡。
顺便说一句,我假设替代方法不仅仅是在本地托管它,而是将其与其他本地请求连接在一起-通常没有充分的理由不进行连接。
如果带宽是无限的,那么最好不要进行分片,因为您的速度将与最慢的服务一样慢-因为延迟并不是完全可预测的,即使服务速度很快,也没有足够的服务,您只需要一点运气不好导致页面加载缓慢。
如果延迟为0,则将负载分散到许多服务器上可以通过利用许多服务器来提高带宽(这无济于事,因为带宽限制可能位于客户端附近,而不是服务器附近),但更重要的是,它可以减少传输的数据量通过增加缓存的有效性来实现。
这取决于您的方案,但是我通常希望延迟比带宽更成为一个问题,除非您的脚本异常庞大(不是jquery)。那时,将jquery托管为串联本地文件的一部分通常更快。
不在本地托管的原因是,例如,当您为带宽付费时,或者在某个速度较慢的服务器上托管时(与客户端的连接出现瓶颈,而不是客户端的瓶颈),或者您知道客户端的带宽会非常低(例如,低端的DSL或调制解调器-移动设备往往比带宽问题更多的延迟问题),或者您的客户为带宽(例如移动设备)支付费用,而脚本是其中的一个非常明显的部分,即次要缓存胜出很重要(不太可能)。
无论如何:更为相关的是您是否首先了解了基础知识;适当的缓存头,连接,缩小和gzipping(最好具有高压缩率)。这就是症结所在:如果您不这样做,那么至少CDN会这样做,所以那是胜利...
TL; DR:如果您具有并置+最小化+ gzipping +缓存所有内容,则尽管CDN的性能更好,但本地提供小脚本比从CDN更快地提供服务 -但前提是您已完成作业,可能不在第一页上加载,并且此规则肯定有例外。
使用Google的jQuery托管库可以更快地加载您的页面。实际上,该库是在页面的同一时间而不是之后加载的。