本地文件与CDN


13

如果要考虑网站加载时间,通常在引用JavaScript或CSS文件时最好使用哪个时间?使用CDN会更好还是仅添加更多HTTP请求?

Answers:


11

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

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

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

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


2
如果CDN是不是更近,并且不使用EDNS客户端子网,它不会在所有以提高性能。这不是“另一个好处”,它离客户端更近,可能会提供一些DOS保护/内容优化(尽管您没有提到这些)是唯一的好处。
symcbean 2016年

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

3

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

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


2

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

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

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


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

1

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

积极点

  1. 静态内容存储在离最终用户更近的地方(更快的加载时间)
  2. 附加子域(cdn1.example.comcdn2.example.com等)有助于限制浏览器的固有限制,在这种浏览器中,它们可以一次将文件下载限制为从同一完全限定域名中同时下载两个文件。换句话说,使用此示例,您将www.example.com始终从中访问HTML,同时从中下载2个文件,从中下载2个文件和从中下载2 cdn1.example.com个文件cdn2.example.com,并且cdn3.example.com所有三个CDN域都访问一个CDN服务和源。

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

0

在CDN上托管有很多缺点:

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

相比之下,优势微不足道:

  1. 加载的数据更少:我们谈论每个站点大约100kb的脚本。1张低质量的图像确实占了更多。如果您没有每分钟访问5.000.000次的极限网站,那将不会有所作为。如果这样,您可能应该使用负载均衡器和更多的Web服务器来设置更好的服务器环境,因为使用CDN不能解决您的问题。
  2. 加载时间更快,因为CDN服务器离客户端更近:在几乎所有连接从EU到美国的延迟大约为100ms的情况下,css的加载时间为50ms或100ms。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.