Github 应该用作 javascript 库的 CDN 吗?

IT技术 javascript performance hosting
2021-01-25 01:39:52

从 CDN 而非您自己的服务器提供 javascript 库具有巨大的优势。您的服务器的工作较少,CDN 的副本可能比您的服务器更靠近用户,但最重要的是,您的用户浏览器已经从该 URL 缓存了它的好机会。最后一个意味着每个人的总工作量减少,所以这显然是一场胜利,而且我们(开发人员)越频繁地依赖 CDN 为我们的 javascript 提供服务,就越有可能。

但流行的 javascript CDN(谷歌、微软、其他?)只托管少量文件。对于其他人,我们可以选择自己托管它们,或者……使用源代码控制服务器作为一种 CDN。Github 或类似的东西不太可能有一个地理分布的文件缓存,为全球服务而优化。但是如果这是常见的做法,那么用户的浏览器很有可能会缓存它。将工作从我们的服务器卸载到 github 的论点只有在 Github 自愿自愿这样做时才有效。

那么,这是普遍做法吗?我们应该互相鼓励这样做吗?Github 介意吗?他们有明确的官方政策吗?

5个回答

如果您关心性能或 IE9 兼容性,则不应对 JavaScript 文件执行此操作。

GitHub 不提供带有远期到期标题的“原始”文件。如果没有跨站点缓存的可能性,您将失去使用公共 CDN 来托管您的 JavaScript 的最大好处。事实上,使用 GitHub 作为 CDN 会比在每个用户第一次请求文件后简单地将文件托管在您自己的服务器上要慢(假设您在服务器上正确配置了缓存)。

另一个问题是 GitHub 不提供具有与文件的实际 MIME 类型匹配的内容类型标头的“原始”文件。在 IE9(可能还有其他浏览器/代理/防火墙/等)中,默认情况下会阻止未提供正确内容类型的 JavaScript 文件。您可以在 BlockUI 演示页面上看到它的实际效果,例如:

在此处输入图片说明

RawGit 直接从 GitHub 提供带有适当 Content-Type 标头的原始文件。在 URL 中使用特定标签或提交哈希(不是分支)。文件将根据 URL 永久缓存。rawgit.com
2021-03-21 01:39:52

Dave Ward 的回答所述,链接到 GitHub“原始”文件存在一些问题

我建议您将 GitHub Pages 作为一种选择。

阅读这篇文章:
GitHub 作为 CDN。使用 GitHub Pages 缓存您的 Javascript、样式表和 Web 资产。

最近在github的支持论坛上问到这个问题,官方的回答是可以。

话虽如此,我同意其他答案:GitHub上从来没有真正的意思是一个CDN,而谷歌和微软都为特定的基础设施。

澄清。该支持论坛的回复与我在回答中链接的文章有关(GitHub 页面作为 CDN - 不是 GitHub“原始”文件):stackoverflow.com/questions/5502540/...)。
2021-04-02 01:39:52

对于原型制作/个人物品很好,但对于生产,我会看:

http://www.cdnjs.com/

http://cachedcommons.org/ -- 不再可用

看起来链接到 Github 很快将不再是一种选择:github.com/blog/...
2021-03-14 01:39:52
实际上这不是问题,如果您打算使用基于 GitHub 的资源作为 CDN,只需确保它作为静态页面站点(现在是 GitHub.io)的一部分进行托管 - 这就是您应该在顺便说一下,第一名。
2021-03-21 01:39:52
我希望你知道 CachedCommons.com 只是从 github.com 提供服务
2021-03-27 01:39:52
但网址似乎指向 CachedCommons cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js,我猜可能是一个代理。
2021-04-08 01:39:52
抱歉,我的意思是关于使用 Github 作为 CDN 的旧信息显然不再适用,而且一切都很好。除了将来可能出现的可用性问题之外,还值得创建一个库来避免这种情况。
2021-04-13 01:39:52

我已经做了几个月了,首先有一些担忧,但是如果您的文件公开可用没有问题,那就太酷了,如果您关心,请使用缩小版本。

但仍然 - Google 和 MS 统治着 jQuery 和 jQuery 模板的空间 - 所以我使用它们。