加快网站响应速度之Keep-Alive

默认情况下,HTTP链接通常在请求完成之后关闭。这意味着服务端在完成响应的交付之后便关闭了TCP链接。为了让链接保持打开,来满足多请求,可以使用keep-alive 头信息。

没有Keep-Alive的情况下,HTTP是怎么工作的

1.客户端需要创建一个链接和服务器交互,用以接收数据。
2.客户端使用这个链接来向服务器请求HTML文件,这个连接在接收完文件的时候就会被关闭。
3.浏览器解析HTML文件并检查完成网页的展示是否还需要其他文件。(例如css文件,js文件,图片)
4.经过彻底的分析,浏览器再重新创建链接来请求这每一个文件。

我们需要Keep-Alive

创建多个链接可能会降低加载速度,同时也会利用服务器更多资源。我们可以通过启用Keep-Alive来克服这个问题,通过单个链接来传递这些文件,如此就避免了重复的创建和关闭新连接。如果没有启用Keep-Alive,展示一个网页的过程可能需要相当长的时间。

如何开启Keep-Alive

Keep-Alive的启用是通过在HTTP 头信息中明确声明来完成的。以apache web server为例,如果你有权限访问Apache的配置文件(httpd.conf),你可以在这里打开keep-alive。配置方法见下文。

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

Keep-live

使用“KeepAlive On”来启用,使用“KeepAlive Off”来禁用。开启之后的响应头大概如下:

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
Date: Thu, 15 Jan 2017 16:45:29 GMT
Content-Length: 1845
Keep-Alive: timeout=10, max=20
Server: Apache/2.4.9 (Unix) PHP/5.6.2

MaxKeepAliveRequests

用来设置KeepAlive链接的最大数量。合适的值取决于实际的情况。

KeepAliveTimeout

这个设置可以防止未使用的链接占用太长久。其实就是链接需要keep多久的问题。比如设置7到10秒通常就可以了。在流量较高的情况下这个值可能就得设置大一点了,以确保没有频繁的TCP链接重新启动。如果这个值设置太小了,那么也许就是去了keep-alive本身的目的了。

Keep-Alive的益处

[ssyellowlist]<ul> <li>减少CPU使用:创建一个新的TCP链接会消耗一些资源,例如CPU和内存的使用。使链接保持存活的时间长一点可以避免频繁的创建新链接,从而减少资源使用。</li> <li>网页加载速度:使用同一个链接来加载多个文件可以是网页加载的快点。</li> <li>HTTPS:https非常消耗资源,所以强烈建议对https开启keep-alive,并尽可能使用HTTP/2进行一些调整。</li> </ul>[/ssyellowlist]

如果你使用的是HTTP/1.1,它的实现方式与HTTP/1.0的keek-live不同,HTTP/1.1的链接默认是保持活跃的,它假定所有的链接都是持久的,除非响应头中包含:“Connection:close”头。但是如果不发送“Connection:close”头并不意味着链接会永远持续,timeout还是会将链接关闭。

喜欢()
评论 (0)
热门搜索
homeagain
分享互联网最新资讯,分布各类教程:苹果cms、vps推荐、宝塔建站知识、edu邮箱、wordpress模板下载……只有你想不到,没有出不了的教程。
234 文章
162 评论
63 喜欢
Top