从网络加载 js 文件还是自己提供服务?

Load js files from the web or serve them yourself?

这个问题我已经有一段时间了,很惊讶我还没有找到 good/complete 答案。

问题本质上是这样的: 当谈到加载 js 文件时,在什么情况下你应该从网络加载它们(如果可用)而不是自己提供它们?什么情况通常允许最低延迟?

例如

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

对比

<script src="js/jquery-1-11-3.min.js"></script>

完整答案:两者。

从网络上加载它对您有几个好处:

1) 浏览器可以拥有的最大打开 HTTP 请求数是有限制的。但是,此限制是针对每个域的。因此,联系 google 的服务器不会阻止您加载 CSS/images.

2) 用户很可能已经缓存了该文件,因此他们将收到 HTTP 304 not changed 响应,而不必下载该文件。

话虽如此,有时服务器会关闭,或者网络问题会阻止您加载该文件。当发生这种情况时,您需要一个解决方法,我们可以这样做:

<script>
if (typeof jQuery == 'undefined') {
    document.write(unescape("%3Cscript src='/js/jquery-2.0.0.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>

在从 CDN 加载 JQuery 之后放置此标签,如果加载失败,jQuery 将未定义并继续从本地源加载它。如果来自 CDN 的负载有效,则将跳过此块。

包括来自自己的服务器专业人士:

  • 技术上 google 服务器可能会关闭,您的网站将无法正确加载。

  • 不信任 google 并阻止它、阻止脚本等的人。 这些人也不想直接包含来自 google 的文件。

  • 到 google 的连接可能会有更高的延迟。如果您在自己的国家/地区有自己的观众和优秀的提供商,您的连接速度可能会比 googles 快。

反派:

  • 更高的网络服务器流量

  • 更多连接

  • 更高CPU影响

你必须自己决定,哪一个更适合你。对于较小的站点,我会选择本地存储的文件。