我正在尝试使用 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/