javascript - 使用 CDN 和本地存储库中的相同 js 文件作为后备会下载文件两次吗?

标签 javascript cdn

我使用的是js文件,它在cdn中可用。我的项目中也有相同的 js 文件作为后备。

<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.3.1/js/swiper.min.js"></script>


<script src="js/3rdPartyLibraries/swiper.min.js"></script>

我的 html 文件中的 head 下有这两个代码。 有人能告诉我js文件会被下载两次还是只下载一次吗? 两个链接都正确吗?它仍然会避免基于名称的重复吗?

有关如何处理回退时 CDN 失败的问题已在其他地方提出和解释。关于问题中解释的场景,我更关心它是否下载同一个库两次(根据答案是肯定的),如果是的话,原因是什么?

最佳答案

资源通过绝对 URL 进行缓存。这意味着 yourdomain.com/file.js 将被视为与 cdn.somewhere.com/file.js 甚至 yourdomain.com/不同的文件file.js?querystring=1.

它只会下载两次源代码并覆盖内存中相同对象的先前实例。要通过 CDN 提供资源的本地副本,我喜欢做的是(以 jquery 为例)

<script type="text/javascript" src="http://cdn.jquery.com/whatever/jquery.js"></script>
<script type="text/javascript">
    if (!window.jQuery) {
        document.write('<script type="text/javascript" src="your/local/copy/of/jquery.js"></script>');
    }
</script>

这将检查库加载的对象是否存在,如果找不到,则尝试加载本地副本。您可以调整它以与公开全局对象的任何库一起使用。

关于javascript - 使用 CDN 和本地存储库中的相同 js 文件作为后备会下载文件两次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42263923/

相关文章:

javascript - meteor 动态分类列表

javascript - OXID 关闭类别中的 "More"以显示更多类别

javascript - 在ckeditor中从word粘贴时将属性分配给标签

css - 使用网络字体会下载整个字形集吗?

javascript - 为什么使用 CDN(内容交付网络)?

javascript - div 从下到上对齐

javascript - Lodash 按字母表分组

ssl - 运行 HTTPS 网站时是否可以使用 CDN?

javascript - 为什么 FontAwesome 建议通过 .js 脚本而不是 CDN 链接包含?

azure - 如何在 Windows Azure 中创建 CDN