为什么默认情况下,Asp.Net Core会引用“ cdnjs.cloudflare.com”?

时间:2019-07-09 15:00:00

标签: c# jquery asp.net-core .net-core cloudflare

我通过模板创建了一个Asp.Net Core项目(请参见下图)。 文件“ Pages / Shared / _ValidationScriptsPartial.cshtml”具有对URL“ https://cdnjs.cloudflare.com”的引用。 在我们的网络环境中,引用外部资源时会遇到问题,因此我们已将文件复制到项目中。

我不知道为什么默认模板提供这样的代码?有人可以向我解释仅通过Intranet业务引用cloudflare的优势吗 申请吗?我是网络开发的初学者,所以我想知道这是否是最佳实践吗?

非常感谢您的努力!

这是我使用的模板:

enter image description here

2 个答案:

答案 0 :(得分:1)

tl; dr:Clouflare(和其他CDN)有助于提高页面加载速度


Cloudflare是CDN(内容交付网络),这意味着它们可以托管大量项目使用的通用JavaScript和CSS文件之类的东西。

每当有人访问您的Web应用程序时,他们的浏览器都将不得不转到您的原始服务器(从中提供应用程序的服务器)。在大多数Extranet情况下,这可能意味着从用户计算机到服务器的许多跃点。但是,诸如Cloudlfare,Akami和Azure CDN(其他CDN)之类的服务允许您“在边缘”托管那些文件。这是一个花哨的营销术语,意为“在物理上更接近用户”。

(文件只能以最慢的组件速度从服务器上下载,因此将文件放在离用户较近的位置意味着它们不必走得太远就能得到文件)

基本上,这些服务在全球拥有数百台服务器,它们可以将文件托管在离用户更近的地方,并且通常在比您通常所能承受的速度更快的服务器硬件上。这意味着页面资源可以比从单个服务器提供页面资源更快地加载到浏览器中-假设您仅从一个数据中心中的一台服务器提供Web应用程序。

对于Intranet用户,这可能并不意味着速度的提高,而实际上可能意味着挑战,因为可能存在适当的防火墙和安全策略,阻止某人访问CDN上托管的文件。在这种情况下,开发人员通常会下载资源(JS和CSS)并将其作为应用程序的一部分来提供服务。

我很可能会猜测微软会在其模板中包含指向通用库的Cloudflare链接,因为大多数开发人员将在开放或允许访问CDN的网络上托管其应用程序。

答案 1 :(得分:0)

最重要的是,该模板将用作演示应用程序。换句话说,他们正在做事以显示可能的情况,并且期望并鼓励您根据自己的需要对其进行自定义。

当涉及到这一点时,重点是要显示如何从CDN引用资源,并在失败的情况下回退到资源的本地版本。它还展示了environment标签的使用,它根据部署到的环境有条件地包括/排除了HTML。

cdnjs.cloudflare.com而言,原因有两个。首先,它是一个免费的公共CDN,涵盖了CSS和JS库,因此它是默认的不错选择。其次,它是LibMan(ASP.NET Core中默认的客户端库管理系统)使用的工具。 LibMan实际上是从cdnjs.cloudflare.com下载文件,然后将它们放在本地wwwroot/lib目录中。

关于您为什么要完全使用CDN的原因,这全都与边缘传递和缓存有关。您的网站通常位于全球一处的一台服务器上。即使您位于同一地点,也可能不会使用少数几个区域。 CDN提供程序通常在世界各地都有服务器,并且资源将从最接近它们的服务器传递给用户,在大多数情况下,响应时间为50毫秒或更短。同样,当涉及到jQuery,Bootstrap等通用库时,如果用户曾经曾访问过Internet上从CDN中提取这些库的站点,则他们将已经缓存了资源,并且会无需再次下载。 CDNJS是客户端库中最受欢迎的CDN之一,因此很有可能已经下载了您的应用程序所依赖的大多数(如果不是全部)库,从而可以缩短站点的加载时间。如果您在本地提供类似jQuery的服务,则用户必须重新下载它,即使他们已经从其他50个站点下载了50次。