当我看到这种常见的做法时,我感到很困惑。但是,由于网络开发不是我的主要领域,我不知道它是否是糟糕的实践,有真正的优势,或只是不重要。
例如,我发现很多这样的情况:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/donmccurdy/aframe-extras@v6.1.1/dist/aframe-extras.min.js"></script>
<script src="https://rawgit.com/rdub80/aframe-gui/master/dist/aframe-gui.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/purecss@2.0.3/build/grids-responsive-min.css">我经常提到的优点是缓存。例如,如果用户导航到使用jquery的页面,则不必再为其他网站获取该页面。
不过,我认为这是在站点中引入了许多外部依赖项。任何一个托管站点/CDN都会下降或变慢,而您的站点就会下降。我个人认为这是一个巨大的缺点,远远超过缓存的好处。
我看到的另一个大问题是引用master而不是特定的版本。使用远程站点上的任何更新,您的站点可能变得不可用。
何时应该引用外部CDN,何时应该在服务器上下载本地副本?
发布于 2021-07-06 05:58:02
是的,很安全。特别是对于著名的CDN服务。您将从缓存中获益。另外,CDN将通信从用户引导到最近的计算机,从而提高下载速度和降低延迟。您可以免费获得基础设施,复制起来非常昂贵。
一个著名的CDN倒闭是很罕见的。可能比一般的Web托管服务更罕见。
发布版本的URL永远不会改变。在某些情况下,它们在技术上是可以的,但在实践中却不会发生,除非项目管理不善,或者在非常特殊的情况下(例如,关键缺陷的热修复)。
https://aframe.io/releases/1.2.0/aframe.min.js总是指向同一个文件。
我绝不会将您的代码指向主程序,而是将其锁定到特定的提交(有关链接请参见提交列表 )。例如:https://cdn.jsdelivr.net/gh/aframevr/aframe@52136de6a863f32d8cb806b65c3c3223f6b0f8a3/dist/aframe-master.min.js
Git提交是不可变的,构建永远不会改变。
您可以始终获取所有依赖项,将它们打包到一个文件中,并自己托管它们。有时是必要的:例如,在具有外部访问限制的网络中服务的Web应用程序。
https://stackoverflow.com/questions/68261924
复制相似问题