哪个性能更好? 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握手和慢启动增加更多时间。
下图是使用keep alive从同一台服务器提供HTML和CSS
通过比较两个加载时间:
1-我的服务器+ CDN = 284毫秒
2-只有我的服务器+保持活着= 228毫秒
两者之间的差异是TCP与CDN服务器握手所需的56ms。
此外,如果我将流水线操作请求添加到单个服务器,则会将页面速度提高到172毫秒。
答案 0 :(得分:1)
最好是与CDN一起保持活力。
这些是正交的东西:
两者的目标是减少延迟。应该始终保持活力。大多数现代HTTP服务器都支持它。
虽然对于静态内容,CDN通常会提供更明显的性能提升。它仍将使用keep-alive,只需使用CDN服务器。
如果我将CDN用于javascript文件......它将需要多个TCP连接到不同的服务器
即使您从自己的服务器提供服务,大多数浏览器也会同时打开2-4个连接。因此,如果您从一台服务器提供HTML而从另一台服务器提供JS,则无关紧要。
此外,大多数CDN选择服务器一次(使用DNS),然后您的客户端与同一服务器通信。所以一个服务器用于HTML,一个用于JS。或者您可以选择通过CDN代理所有内容,也包括动态HTML。