我使用的是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/