前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一分钟了解 Keep-Alive

一分钟了解 Keep-Alive

作者头像
ImportSource
发布2018-04-03 11:46:08
1K0
发布2018-04-03 11:46:08
举报
文章被收录于专栏:ImportSource

默认的HTTP连接(connection)通常都会在每次request完成后就关闭掉,这也就意味着server端会在发送了一个response之后就把TCP 连接(connection)close掉。为了能够让connection在多次请求中保持open,就引入了keep-alive connection,也就是长连接,也可以叫persistent connection(持续连接)。ps:以下统称长连接。

只要server端愿意配合,所有现代浏览器都可以使用长连接。你也可以直接使用HTTP/1.1,它的Keep-Alive实现有点不同,就是connection是默认是一直保持open的状态,除非response中包含“Connection: close”的header。

没有Keep-Alive的情况下HTTP是如何工作的

客户端去创建一个新的connection来交互并且接收到来自server的一个文件。客户端使用一个新的connection来发起一次请求(request),在接收到文件后就会终止。浏览器解析response,然后检查是否还有其他的必须的文件来辅助显示整个网页(比如js、css、图片等等)。经过分析后,它会对每个这些文件分别创建新的连接去发起请求来获取,但这种机制是非常低效的,特别是对于那种有大量元素(element)的网页。

使用Keep-Alive之后

使用了Keep-Alive之后,客户端会重用现存的connection,而不是每次都去重新创建一个新的connection。

使用Keep-Alive的好处

  • 更低的CPU和内存使用(因为在同一时间打开的连接更少了)。
  • 可以让HTTP对request和response实现pipeline。
  • 减少了网络堵塞(TCP连接更少了)。
  • request的延迟降低了(第一次握手之后就不需要握手了)。
  • 在不需要关闭TCP连接的情况下就可以告知errors。

这些优势对于安全的HTTPS连接更为重要,因为建立安全连接需要更多的CPU时间和网络往返(round-trips)。

影响Keep-Alive功能的几个属性

这里仅列举Apache的配置:

  • KeepAlive

使用 “KeepAlive On” 来开启。

如果要关闭,就使用 “KeepAlive Off”。

  • MaxKeepAliveRequests

这个属性负责设置每个Keep-Alive连接所允许的最大请求数。

一般设置100对于大多数场景就够了。但是,具体还得取决于一个网页所依赖的file有多少,随着file的增加而调整此值。

  • KeepAliveTimeout

这个属性就是为了避免一个闲置的连接空闲太长时间。具体就是你的server需要等待下一个新的客户端request多长时间。如果等了指定时长还是没有新的request那么就关闭了。

一旦在规定的时间内客户端发过来新的请求,那么这个timeout又开始重新计算。

总之

总之,我们可以看到HTTP Keep-Alive在我们的应用程序性能提升方面起到了关键的作用。我们应该把它利用起来而不是使用默认的设置。并尝试根据自己的一个网页所涉及的请求次数来调整,特别是对于https的连接来说,提高性能更是需要做的事情。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ImportSource 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档