托管与链接到第三方脚本

托管与链接到第三方脚本

我注意到很多网站都链接到位于第三方主机上的外部脚本。一个非常常见的例子是 jquery。在 serverfault/stackoverflow/superuser 上,jquery 链接到 googleapis.com 上的地址。

与在您自己的网站上托管文件相比,这样做有什么好处?

其中的一些因素如下:

在自己的主机上

  • 访客隐私,不向第三方透露
  • 不会被浏览器请求策略所束缚
  • 不依赖第三方正常运行时间

第三方托管

  • 带宽/流量
  • 自动更新

但是选择其中一个的主要原因是什么呢?

虽然我有自己的观点,但我提出这个问题的目的是为了了解为什么会做出其他选择。

答案1

速度。我们从加载 jQuery、jQuery UIGoogle AJAX 库 API,这增加了任何访问者的缓存中都有这些库的缓存版本的机会。而且,与我们的 Web 服务器相比,Google 的基础设施/CDN 更适合为这些类型的静态文件提供服务。

除此之外,带宽节省是真实的 - 这两个库加在一起相当重。

缺点:我不太信任其他托管商,不敢在自己的网站上托管图书馆。对于 Google 上未列出的图书馆,我们自己托管。

答案2

我认为唯一真正的原因是始终保持最新状态。

我反对链接库、脚本等,因为我认为我的流量统计数据是应该保留在家里的价值。

此外,托管和更新库非常简单,cronjob 可以轻松、高效且安全地完成这项工作。

答案3

如果您链接到某个资源以节省带宽(或者在大型公共库的情况下尝试改善对用户的响应时间),请注意两个潜在的主要问题:

  1. 由于意外、DoS 或计划维护,外部主机可能会在某个时候停机。这可能会导致您的网站崩溃,因此请务必考虑到这一点(即使只是向用户提供有用的消息,例如“无法加载 JQuery,某些功能可能已损坏。请刷新此页面。如果问题仍然存在,请报告给...”
  2. 当新版本出现时,由于错误的假设,它可能会与您的其他代码存在一些不兼容性(即,您依赖了未记录或未正式定义的行为,而这些行为在版本之间发生了变化,或者新功能带来了命名空间冲突)。这可能会破坏您的页面,直到您找到并解决问题为止。

如果您热链接到脚本或对应用程序运行至关重要的任何其他内容,请务必保留本地副本。这样,如果上述任一问题发生且无法快速修复,您可以切换到使用本地副本作为临时措施。

相关内容