哪个在性能方面更好;保持活力或CDN

时间:2018-05-26 18:43:30

标签: performance http tcp cdn keep-alive

哪个性能更好? keep-alive连接从同一服务器获取资源,或从公共CDN获取资源。

修改1:

  • 我的意思是表现=页面加载时间
  • 我在这两个场景之间进行比较,以找到哪个页面加载速度更快:

    1-如果我提供HTML&来自一个(我的)服务器的javascript。这将受益于连接保持活动,这将减少多个TCP / TLS握手到不同的服务器。

    2-如果我将CDN用于javascript文件,这将受益于CDN的优势,但它也需要多个TCP连接到不同的服务器进行握手。

编辑2:

请参阅“ILYA GRIGORIK”撰写的书籍“High Performance Browser Networking”以下图片

接下来的两张图片说明了我的服务器上的HTML请求和另一台服务器的CSS请求。保持活力在这里不会有优势,因为不同服务器需要2个请求,这将为TCP握手和慢启动增加更多时间。

HTTP Request for HTML on my server Another request for CSS on CDN

下图是使用keep alive从同一台服务器提供HTML和CSS

HTML & CSS request from same server using CDN

通过比较两个加载时间:

1-我的服务器+ CDN = 284毫秒

2-只有我的服务器+保持活着= 228毫秒

两者之间的差异是TCP与CDN服务器握手所需的56ms。

此外,如果我将流水线操作请求添加到单个服务器,则会将页面速度提高到172毫秒。

1 个答案:

答案 0 :(得分:1)

最好是与CDN一起保持活力。

这些是正交的东西:

  • keep-alive是HTTP 1.1的一项功能,可以减少协议开销,
  • CDN减少了到服务器的距离并增加了带宽。

两者的目标是减少延迟。应该始终保持活力。大多数现代HTTP服务器都支持它。

虽然对于静态内容,CDN通常会提供更明显的性能提升。它仍将使用keep-alive,只需使用CDN服务器。

  

如果我将CDN用于javascript文件......它将需要多个TCP连接到不同的服务器

即使您从自己的服务器提供服务,大多数浏览器也会同时打开2-4个连接。因此,如果您从一台服务器提供HTML而从另一台服务器提供JS,则无关紧要。

此外,大多数CDN选择服务器一次(使用DNS),然后您的客户端与同一服务器通信。所以一个服务器用于HTML,一个用于JS。或者您可以选择通过CDN代理所有内容,也包括动态HTML。