Keep-Alive
Keep-Alive 是一个 HTTP 标头,允许 Web 服务器 使用单个连接处理来自 Web 浏览器 的多个请求。运行 HTTP/1 的服务器通常会启用 Keep-Alive,以提高 网站 性能。HTTP/2 不使用 Keep-Alive 标头,因为这属于 HTTP/2 协议的 默认行为。
在 Web 服务器上启用 Keep-Alive 后,服务器与客户端(网站访客)之间会建立持久连接。TCP 连接会一直保持打开状态,直到被关闭或超时。由于每个 TCP 连接都必须完成 握手过程,多个连接会增加页面加载时间。Keep-Alive 让浏览器可以通过单个连接 下载网页的所有资源,例如图片和 CSS 文件。
Keep-Alive 的缺点是会占用 Web 服务器更多的 系统资源。如果服务器上的网站收到大量流量,服务器可能会同时保持多个、甚至数千个持久连接处于打开状态。最终,服务器可能无法处理新连接并变得无响应。Apache 提供了以下指令,可防止服务器达到最大容量:
- KeepAliveTimeout - 持久连接在等待新请求时可以保持打开状态的最长时间
- MaxKeepAliveRequests - 单个连接中允许的最大请求数,达到此数量后需要重置连接
要在 Apache 服务器上启用 Keep-Alive,请将以下代码添加到服务器级别的包含文件,或特定网站的 .HTACCESS 文件中:
<IfModule mod_headers.c>
Header set Connection keep-alive
</IfModule>
测试你的知识