load-balancing - 可以使用负载均衡器启用 Keep-alive 吗?

标签 load-balancing keep-alive

我正在尝试使用 Google 的 Page Speed API 优化我的 Web 应用程序,该 API 强调了我的 HTTP 响应 header 中缺少“Keep-alive”作为主要的页面速度弱点。

在与我的后端开发人员和系统管理员交谈时,他们告诉我在站点上使用 Keep-alive 是不可能的,因为我们使用了负载平衡器。

我想知道,这是准确的吗?是否有支持 Keep-alive 的负载均衡器?

如果无法与负载均衡器一起使用,Page Speed API 会提示 Keep-alive,这对我来说似乎很奇怪,因为我认为相当多的应用程序和大型站点都使用负载均衡器。

谢谢!

最佳答案

我不知道你有什么类型的负载平衡器......但我认为它不会阻止使用保持事件的连接。

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

但回到负载平衡器。如果您有网络负载平衡器,它应该可以毫无问题地工作 - 它只会将传入的 TCP 连接重定向到后端服务器之一。如果你有 HTTP 负载均衡器,它会接受连接,读取请求,将请求发送到后端服务器,等待它响应并将响应发送回浏览器。如果启用保持事件,负载平衡器应转发它通过同一连接接收的下一个请求。

对于动态页面,您不需要保持事件状态。 Keep-alive 主要用于静态内容(js、图像、css),因为每个 html 页面通常有 10 个以上的静态对象。所以我建议继续通过负载平衡器提供 html 服务,并通过不同的主机名 (static.example.com) 提供静态内容。

关于load-balancing - 可以使用负载均衡器启用 Keep-alive 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216330/

相关文章:

r - 对 RServe 的 R 请求进行负载平衡

.net - IIS 7.5 : Force Keep Alive header in Response

java - 使用 Java 实现 keepalive

kubernetes - GCP GKE负载平衡器连接被拒绝

node.js - docker swarm模式下服务副本之间网络请求的负载均衡

wcf - WCF + SSL 如何与负载平衡一起工作?

r - R foreach 循环中的负载平衡

http - HAProxy 保持事件 - 1.5-dev21

Android http连接-多台设备无法连接同一台服务器

HTTP 与不同主机保持事件状态