短链接
请求示例
在HTTP/1.0中,默认使用的是短连接。如果需要使用长连接:通过Connection:Keep-alive来实现长连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话
短链接操作步骤:
建立链接数据传输关闭链接
优点:服务器来说管理较为简单,存在连接都是有用的连接
缺点:频繁的建立链接和关闭浪费时间
适用场景:用户量巨大的web网站
每一次都是重新连接请求
长连接
请求示例
HTTP1.1协议默认使用的是长连接,如果需要使用短连接Connection:close。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
假如在空闲时间内,再次使用此连接,则连接仍然有效,使用完之后,重新计时间,空闲时间到期之后过期
建立链接数据传输…(保持链接)…数据传输关闭链接
开启Keep-Alive的优缺点:
优点:Keep-Alive模式更加高效,因为避免了连接建立和释放的开销。
缺点:长时间的Tcp连接容易导致系统资源无效占用,浪费系统资源。
适用于场景:用于操作频繁,点对点的通讯,而且连接数不能太多,连接数越多对服务器的压力越大
解决方案:关闭长时间没有读写操作的连接(设置连接时间),或者限制客户端最大连接数(设置连接数)
使用telnet模拟http短连接与长连接
telnet www.baidu.com
短连接
长连接
短轮询
请求示例
由客户端每隔一段时间,向服务器发起一次http请求,服务器查询接口是否有数据更新,若有则返回最新数据,没有则提示客户端没有最新数据
如:获取库存数量,不停的请求服务器,如果客户端多了,对于服务器的压力很大
优点:客户端和服务器端实现都比较简单
缺点:请求间隔小,则频繁请求,无用请求多,浪费网络带宽和服务器资源
请求间隔大,则信息时效性一般
长轮询
请求示例
客户端向服务器发出一个设置较长网络超时时间的http请求,并且在Http连接超时前,不主动断开连接;等待客户端超时或有数据返回后,再次建立一个同样的Http请求
如:
客户端向服务器发送请求,超时时间为30s;
30s内服务器库存有数据变化,则返回数据,并且服务器端断开连接
没有库存数据更新,不会立即返回数据给客户端,30s后客户端超时会主动断开连接,然后客户端将重新建立一个新的http连接,重复上述操作
示例
标红的就是没有数据改变被阻塞挂起请求
将请求挂起会导致资源的浪费,当客户端请求多了,服务器端挂起的线程不停的检测数据库也有问题
长轮询短轮询不适用客户端数据量过多的情况。
优点:有数据更新时,能比较及时的响应
没有新数据更新时,服务端会保持连接直到超时,请求相对少,节省网络带宽
缺点:服务器端需要保持 HTTP 连接,消耗一定的资源
服务器端数据变更频繁时,请求也会变得频繁
返回数据顺序无保证,难于管理维护
标签:通讯,http,请求,实时,链接,服务器,超时,连接,客户端 From: https://blog.51cto.com/u_11555417/9346080