2011-11-21 41 views
10

我试图使用谷歌的Page Speed API来优化我的web应用程序,这个API已经突出显示了我的HTTP响应头文件中缺少“Keep-alive”作为主要的页面速度弱点。是否可以启用与负载平衡器保持连接?

与我的后端开发者和系统管理员聊天,他们告诉我,使用保持活动的网站上是不可能的,因为我们使用负载平衡器。

我想知道,这是正确的?是否有支持保持活动的负载平衡器?

对于我来说似乎很奇怪,Page Speed API会抱怨保持活力,如果它不可能与负载平衡器一起使用,因为我会想象有相当数量的应用程序和大型网站使用负载平衡器。

谢谢!

+0

告诉他们切换到HAProxy并启用HTTP持久连接。 :) – bzlm

+0

这实际上是否会产生性能差异,或者只是将响应标头中的保持活动状态? –

+0

如果您不确切知道HTTP持久连接是什么,您不应该要求您的后端开发人员和系统管理员实施它。 – bzlm

回答

5

我不知道你是什么类型的负载均衡的做......但我不认为这将阻止使用保持连接的。

负载平衡器将处理每个传入连接到后端服务器中的一个。现在,浏览器需要为每个对象创建一个新连接来获取该对象(例如所有小图像)。建立和关闭TCP连接需要一些时间。这就是Google Page Speed建议保持启用状态的原因。另一种选择是将所有小图像放在一个大图像中,并使用css精灵在页面上的不同位置显示它的一部分。

但回到负载平衡器。如果你有网络负载平衡器,它应该没有任何问题 - 它只会将传入的TCP连接重定向到后端服务器之一。如果您有HTTP负载平衡器,它将接受连接,读取请求,将请求发送到后端服务器,等待它回答并将答案发送回浏览器。如果启用保持活动状态,则负载平衡器应该转发通过同一连接收到的下一个请求。

对于动态网页,你不需要保持活跃。 Keep-alive主要用于静态内容(js,images,css),因为每个html页面通常有10多个静态对象。所以我建议继续通过负载均衡器提供html槽,并通过不同的主机名(static.example.com)提供静态内容。