Github是否应该用作JavaScript库的CDN?

108

使用CDN来提供JavaScript库而非您自己的服务器有很多优势。这会减轻您服务器的工作量,CDN可能会比您的服务器更接近用户,最重要的是,您的用户的浏览器很有可能已经从该URL缓存了此文件。最后一个意味着所有人需要的总工作量都更少,因此这显然是全方位的胜利,如果我们(开发人员)更多地依赖CDN来提供JavaScript,那么这种情况更有可能发生。

但是受欢迎的JavaScript CDN(Google、Microsoft、其他?)仅托管少量文件。对于其他文件,我们可以选择自己托管它们,或者...将源代码控制服务器用作一种CDN。不太可能Github或类似网站具有地理分布式优化文件的缓存,以便全球提供服务。但是,如果这是常见做法,则用户的浏览器有一定机会已经缓存了文件。只有在Github自愿承担这项工作时,将工作卸载到我们的服务器上的论据才有效。

因此,这是一种常见做法吗?我们是否应该互相鼓励这样做?Github介意吗?他们是否有明确的政策声明?


6
如果作者重新排列文件结构会发生什么?这不是他的问题,数百个网站上的代码会出现问题。 - Raynos
2
@Raynos 如果您是 GitHub 存储库的“作者”,那么您可以控制更改。 - Chris Jacob
2
@ChrisJacob 这就是关键。如果我更改了自己的文件结构,你指向的代码片段已经不存在,那就不是我的问题了。 - Raynos
5
您可以使用 https://rawgithub.com/ 来分享正在进行中的HTML、JavaScript或CSS,以便快速演示给他人,或者可能在jsPerf测试中使用。 - Giovanni Cappellotto
问题应该重新开放,因为在上面@GiovanniCappellotto的评论中现在有一个正确的答案。 - Supersharp
5个回答

103

如果您关心性能或IE9兼容性,则不应该这样做JavaScript文件。

GitHub没有为其“原始”文件提供远期过期标头。没有跨站点缓存的可能性,您将失去使用公共CDN托管JavaScript的最大好处。实际上,使用GitHub作为CDN将比在每个用户对文件的第一个请求后仅在自己的服务器上托管文件更慢(假设您在服务器上正确配置了缓存)。

另一个问题是GitHub不提供与文件的实际MIME类型匹配的内容类型标头。在IE9(以及可能其他浏览器/代理/防火墙等)中,默认情况下会阻止未使用正确内容类型服务的JavaScript文件。例如,在BlockUI演示页面上可以看到以下操作:

enter image description here


RawGit通过正确的Content-Type头直接从GitHub提供原始文件。在URL中使用特定的标签或提交哈希(而不是分支)。基于URL永久缓存文件。https://rawgit.com/ - Kerem Baydoğan

19

12

这个问题曾在Github的支持论坛中被提出,官方回答是可以的。

话虽如此,我同意其他答案:Github并不是真正意义上的CDN。与此不同,Google和Microsoft有专门的基础设施来提供CDN服务。


7
为了阐明,支持论坛的回复与我在答案中提供链接的文章有关(GitHub Pages作为CDN-而不是GitHub“原始”文件):https://dev59.com/RG035IYBdhLWcg3wTuJu#6032500。 - Chris Jacob

10

我希望你知道CachedCommons.com只是从github.com提供服务。 - ocodo
但是URL似乎指向CachedCommons http://cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js,可能是代理吧。 - meleyal
抱歉,我的意思是使用Github作为CDN的旧信息似乎不再适用,现在一切都很好。除了未来可能出现的可用性问题外,复制一个库值得一试,以避免这种情况的发生。 - ocodo
2
看起来很快链接到Github将不再是一个选项:https://github.com/blog/1482-heads-up-nosniff-header-support-coming-to-chrome-and-firefox - meleyal
1
其实这不是问题,如果你要使用 GitHub 作为 CDN 的资源,只需确保它作为静态页面站点的一部分进行托管(现在是 GitHub.io)- 顺便说一下,这应该是你一开始就应该做的。 - ocodo
@meleyal,cachedcommons.org已经宕机了,域名正在出售!! - Akash Kava

-2

我已经做了几个月了,一开始有些担心,但如果您不介意您的文件被公开使用,可以使用缩小版本,这是完全没问题的。

但是 - 谷歌和微软在jQuery和jQuery模板领域占据主导地位 - 所以我使用它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接