<分区>
从 CDN 而不是您自己的服务器提供 javascript 库具有巨大的优势。您的服务器的工作量更少,CDN 的副本可能比您的服务器更接近用户,但最重要的是,您的用户的浏览器很有可能已经从该 URL 缓存了它。最后一个意味着每个人的总工作量减少,所以这显然是一个全面的胜利,而且我们(开发人员)越经常依赖 CDN 来为我们的 javascript 提供服务。
但流行的 javascript CDN(Google、Microsoft 或其他?)仅托管少量文件。对于其他人,我们可以选择自己托管它们,或者...使用源代码控制服务器作为一种 CDN。 Github 或类似网站不太可能拥有针对全局服务优化的地理分布式文件缓存。但如果这是常见的做法,那么用户的浏览器很有可能会缓存它。将工作从我们的服务器卸载到 github 的论点只有在 Github 自愿这样做的情况下才有效。
那么,这是常见的做法吗?我们应该互相鼓励吗? Github介意吗?他们有官方政策吗?
如果您关心性能或 IE9 兼容性,则不应为 JavaScript 文件执行此操作。
GitHub 不提供带有远期过期 header 的“原始”文件。如果没有跨站点缓存的可能性,您将失去使用公共(public) CDN 托管 JavaScript 的最大好处。事实上,使用 GitHub 作为 CDN 比在每个用户第一次请求文件后将文件简单地托管在您自己的服务器上要慢(假设您在服务器上正确配置了缓存)。
另一个问题是 GitHub 不提供内容类型 header 与文件的实际 MIME 类型相匹配的“原始”文件。在 IE9(可能还有其他浏览器/代理/防火墙/等)中,默认情况下会阻止未提供正确内容类型的 JavaScript 文件。您可以在 BlockUI 演示页面上看到实际操作,例如: