如果您担心网站加载时间,那么在引用JavaScript或CSS文件时通常最好使用该方法?使用CDN会更好还是仅添加更多HTTP请求?

#1 楼

CDN应该用于所有静态文件(.css / .js / images)。

但是,有时javascript或css文件可能具有动态方面,例如它将包含唯一的用户字符串或类似的内容。在这种情况下,CDN服务器必须在每次请求时都与原始服务器联系,这将使目的无效。

如果您的CSS和Javascript对所有用户都是静态的,那么使用CDN是正确的选择。这不会引起任何额外的HTTP请求,因为它只会从CDN而不是您自己的Web服务器中加载css和js文件(除非您使用内联代码)。因此,没有用户浏览器从您的服务器加载这些请求(它们将通过CDN加载),没有其他请求,您只是在更改这些请求的发送位置(同样,只要您当前不使用内联代码)。

使用CDN的其他好处是CDN服务器最有可能位于您的最终用户附近,而不是您的原始用户,这将有利于加载时间。通过专门为Web服务器提供静态内容,CDN服务器也可能设置为比原始服务器更快地提供静态内容。

评论


如果CDN距离不远,并且不使用edns-client-subnet,则根本不会提高性能。这不是“其他好处”,而是靠近客户端,可能会提供一些DOS保护/内容优化(尽管您没有提到这些)是唯一的好处。

–symcbean
16年4月6日在22:39

使用CDN的主要好处是,用户很可能已经访问了使用相同CDN的网站,而浏览器已经对其进行了缓存,因此,当用户到达您的网站时,浏览器将不会发送任何请求。

– Offir Pe'er
19年12月1日上午10:10

#2 楼

通常首选使用CDN与传统的Web托管来交付静态文件(例如CSS,JS和图像)。这是因为一旦您的文件缓存在CDN的边缘服务器上,您的站点访问者就会从最近的存在点(PoP)而不是原始服务器那里获得静态内容。

在大多数情况下,这可以缩短客户端与服务器之间的距离,从而有助于缩短加载时间,而无需添加任何其他HTTP请求。这在其他方面也有帮助,例如增加冗余度,减轻源头负担等。

#3 楼

如果需要CDN,请使用CDN。如果您的用户是全球性的,并且分布范围广,或者您有很多这样的内容不想存储在自己的服务器上,那么CDN很有用。在全球范围内,如果服务器离用户更近,它可以加快对内容的访问。如果您有许多GB或TB的静态数据,并且访问该内容的负担很重,则CDN可以帮助您解决此问题。

但是,小型本地站点或轻负载站点很少需要这些东西,并且CDN只会增加设置,操作和工作流程等复杂性,例如缓存问题。

我经常看到人们使用CDN,因为他们读到应该使用CDN,而没有其他原因。

评论


感谢您指出它并不总是必需的,的确增加了不必要的复杂性。在我的情况下,我使用的是基于laravel的CMS,带有后端资产合并器,并缓存了小型文件,在几个js文件上设置S3 CDN,gulp和vc是浪费时间。我宁愿专注于数据库缓存和适当的代码以提高速度

–拉贾·科里(Raja Khoury)
17年11月26日在4:14



@Rob,赞成。正如我父亲曾经告诉我的那样:“始终使用正确的工具来完成工作。”快速而肮脏的操作,请确保使用CDN。 Rob同意编写生产代码,因为它遵循KISS原则。

– clairestreb
20-09-27在12:33



#4 楼

在CDN上托管有很多缺点:


隐私。每当您访问在CDN上托管脚本/样式表/字体的站点时,CDN都会知道您访问该站点。
离线时间。在过去的几周中,cloudflare等服务器运行了几个小时,加载时间非常缓慢,甚至离线了几分钟。最好的情况是,您的网站看起来很丑陋,发生这种情况时,在最坏的情况下,一旦竞争对手也遇到问题,它就完全无法使用,并且如果您的网站在线而不是在线,您可能会吸引他们的客户。
安全性。 CDN可能遭到破坏(之前发生过)。最好的情况是您的服务器传播恶意软件,最坏的情况是您的数据现在公开或消失。

相比优势微不足道:


较少要加载的数据:我们讨论每个站点大约100kb的脚本。 1张低质量的图像确实占了更多。如果您没有每分钟访问5.000.000次的极限网站,那将不会有所作为。如果是这样,则可能应该使用负载平衡器和更多的Web服务器来设置更好的服务器环境,因为使用CDN并不能解决您的问题。
由于CDN服务器离客户端更近,因此加载时间更短:几乎所有连接从欧盟到美国的延迟大约为100毫秒,css的加载时间为50毫秒或100毫秒。

在生产环境中使用CDN的理由很零。

#5 楼

使用CDN可能既是网站的负担,也是网站的收益,这取决于网站的实现方式。

正点


静态内容存储得更紧密对最终用户(更快的加载时间)
其他子域(cdn1.example.comcdn2.example.com等),这有助于浏览器的固有限制,即它们将文件下载限制为来自同一完全限定域名的两个同时文件任何一次。换句话说,使用此示例,您将访问www.example.com的HTML,同时始终从cdn1.example.com下载2个文件,从cdn2.example.com下载2个文件,从cdn3.example.com下载2个文件,并且所有三个CDN域都访问一个CDN服务和源。


评论


您能否提供“每个域2个同时文件”的来源参考?当然是每个浏览器。同样随着HTTP / 2的出现,域分片成为一个有争议的问题。

–帕特里克·梅夫克(Patrick Mevzek)
19年7月2日在15:49