托管脚本的优缺点


12

我已经看到一些开发人员使用托管脚本来链接他们的库。

cdn.jquerytools.org 就是一个例子。

我还看到人们抱怨托管脚本链接已被劫持。

在现实中使用托管脚本的安全性如何?脚本是否自动更新?例如,如果jQuery 5转到6,我是否会自动获得版本6,还是需要更新链接?

我还看到Google为托管提供了许多此类脚本设置。

优缺点都有什么?

Answers:


11

优点

  • 您的脚本加载速度更快。如果您有大量资源需要从单个域中加载,则浏览器通常会遇到瓶颈,因此您只有很少的并行请求到达同一主机。因此,如果您要加载十六个单独的脚本,多个图像和多个CSS文档,则每个资源都将等待轮流加载,因此队列将会排队。(一定要注意将CSS和Javascript文件串联在一起-仅加载两个脚本资源会明显更快)。
  • 但是,如果将这些资源剥离到一个单独的域中,则浏览器在打开与该服务器的其他连接时不会出现问题,这意味着可以同时加载更多资源,从而可以更快地执行页面。您还要让其他服务器处理部分页面加载,这对您的服务器很有用,因为它可能正在处理多个脚本执行请求。
  • 此外,这些CDN服务器(内容开发网络)配置为作为 CDN 运行。它们通常是无cookie的(用于较小的数据包大小),并且设置有非常轻巧的服务器,该服务器完全专注于服务资源和缓存常用资源,而与日常提升无关,而像沼泽标准那样Apache服务器将执行。
  • 使用CDN(例如Google或Akami)也有其他好处-Google尤其在世界范围内拥有服务器,其路由系统足够智能,可以将对资源的请求与现有的最接近地理副本配对。您的服务器可能正在尝试在俄罗斯的弗拉基米尔(Vladimir)上提供jQuery.js-Google可能在弗拉基米尔(Vladimir)附近拥有相同的资源,从而减少了延迟。
  • 另外,由于有这么多的网站已经在使用这些CDN,因此用户提供的资源很有可能已被缓存。服务器中的jQuery.js和Google服务器中的jQuery.js不会被视为相同的文件,无论它们是否完全相同-如果从Google加载,它将能够使用前一个站点的缓存副本用户访问过。
  • 文件本身不会更改,尤其是对于Javascript框架等脚本资源而言。如果发布了新版本,则Google将继续专门托管旧版本(无论漏洞多么令人讨厌),以便CDN将继续正常运行,并且不会处理任何不良请求。这就是为什么任何CDN文件都带有正确的版本号后缀的原因。

缺点

  1. 您的CDN可能无法使用。但是,这种机会可能比您的网站崩溃的机会要小。较大的CDN(例如Google和Akami)具有多层故障转移。
  2. 如果只有一个或两个资源要从自己的服务器加载,则创建新连接可能不值得。
  3. 您对要提供的文件没有任何控制权,因此使用自定义版本的jQuery或您尝试加载的其他任何版本都已用尽,除非您为自己的CDN付费。

安全

我会推荐这篇El Stack帖子,以及大量使用Google搜索的主题。每个CDN都会有所不同,尽管总的来说,我认为这是个小问题。


1

没有人提到的是Google的另一种跟踪选项。他们不会无缘无故地免费提供所有这些服务。AdSense和Google Analytics(分析)就足够了,至少可以过滤掉。那是我书中的一个大骗局。


0

优点:

  • 您不必为与提供文件有关的带宽付费,通常

缺点:

  • 您将受到所使用的托管服务提供商的可用性的约束(如果它们由于某种原因而宕机,您也将崩溃)。
  • 您被迫使用托管提供商提供的任何版本的脚本

使用CDN还有其他好处,但是它们与使用第三脚本托管服务没有直接关系。


0

就最佳实践而言,优化页面加载的常用方法是将所有JS资源捆绑在一起,这是由于Jarrod提到的到单个域的连接数量受到限制,并且在响应中设置了一个远距离到期的标头。

正如Jarrod所指出的那样,CDN带来了这种混合,尤其是流行的混合,是因为用户以前已经访问过URL,并且可以立即从其客户端的缓存中检索JS资源,甚至不需要建立连接。

为此,如果我们都使用CDN并采用了最佳做法,则可以使用户在最初访问我们的URL时无需再获取大约10-50KB的空间,从而使他们可以更快地加载页面。

强烈建议使用CDN,这有两个原因:提到的缺点Jarrod确实存在,但完全没有意义,如果您已经将源捆绑到单个文档中,则将迫使所有人检索例如静态jQuery部分。每次更新捆绑的资源之一时,文档(约33KB)。

我不知道这对您来说有多重要,但是由于拥有庞大的用户群,这会导致带宽大量减少并节省大量资金,我们可以将其中的机器人转移到更紧迫的事情上,例如流媒体色情和购买啤酒。


-2

不要做

就个人而言,我不会依赖第三方托管脚本。如果您利用其他人的脚本,您将受到他们的摆布。有几件事情要考虑:

  1. 如果他们的网站出现故障,则您的页面可能会超时或出错。
  2. 如果他们停业并关闭主机,您将失去所有功能
  3. 如果他们被黑客入侵,您也可能会被黑客入侵。
  4. 跨站点脚本可能会对SSL证书造成严重破坏
  5. 页面加载时间会急剧增加
  6. 如果界面更改,则需要修改所有函数调用

相信我,将代码托管在您自己的站点上更安全。您只需要烧一次,就可以构建250个网站,并使主机开始变得有趣,因为您依靠的是第三方停止运行的脚本。


1
我认为,如果您使用大型,可靠的CDN,则可能不会遇到很多问题。1)我想到的是谷歌的CDN将有非常良好的运行时间,2)我没有看到谷歌打算业务的任何时间不久,3)它是合理的,但同样,我期望很快修补/固定,4 。)我没有看到任何问题; 5)如果它是受人尊敬的CDN,则页面加载实际上应该比您可能自己服务的速度快(在流水线,多站点缓存和无cookie域之间),6)像jQuery这样的核心版本库应该没有问题。
scunliffe 2011年

1
...此外,如果远程CDN脚本失败,也没有什么可以阻止您实施自己的后备脚本。
scunliffe 2011年

这些原因中没有一个列出的原因是科德角(Cape Cod Gunny)对现代CDN(例如Google)或其他许多大型CDN提供商的关注。
Jarrod Nettles
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.