javascript - Github 应该用作 JavaScript 库的 CDN 吗?

标签 javascript performance hosting

<分区>

从 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 演示页面上看到实际操作,例如:

enter image description here

关于javascript - Github 应该用作 JavaScript 库的 CDN 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5502540/

相关文章:

javascript - Yii2 ActiveForm Ajax POST 被调用两次

javascript - 在 Django 中设置当前导航菜单项的样式

c - Windows 中进程的最短保证时间是多少?

node.js - 托管 NodeJS 应用程序

php - 如何在 Windows 托管服务器上运行 .php 文件

javascript - Bootstrap 模式 : only when using the fade class 中的滚动问题

javascript - 非常简单的 javascript 请求。抓取元素ID

带有预加载图像的 iOS 应用程序

mysql - 这个查询有什么问题? EXPLAIN 对我来说很好

php - 是否可以编写仅针对 Ubuntu Web Server 的代码?