HTTP协议中的长连接,读完之后,大部分程序员收藏了...( 七 )
TCP keep alive的表现:
当一个连接“一段时间”没有数据通讯时 , 一方会发出一个心跳包(Keep Alive包) , 如果对方有回包则表明当前连接有效 , 继续监控 。
这个“一段时间”可以设置 。 具体做法google吧 。
HTTP 流水线技术
使用了HTTP长连接(HTTP persistent connection )之后的好处 , 包括可以使用HTTP 流水线技术(HTTP pipelining , 也有翻译为管道化连接) , 它是指 , 在一个TCP连接内 , 多个HTTP请求可以并行 , 下一个HTTP请求在上一个HTTP请求的应答完成之前就发起 。 从wiki上了解到这个技术目前并没有广泛使用 , 使用这个技术必须要求客户端和服务器端都能支持 , 目前有部分浏览器完全支持 , 而服务端的支持仅需要:按HTTP请求顺序正确返回Response(也就是请求&响应采用FIFO模式) , wiki里也特地指出 , 只要服务器能够正确处理使用HTTP pipelinning的客户端请求 , 那么服务器就算是支持了HTTP pipelining 。
由于要求服务端返回响应数据的顺序必须跟客户端请求时的顺序一致 , 这样也就是要求FIFO , 这容易导致Head-of-line blocking:第一个请求的响应发送影响到了后边的请求 , 因为这个原因导致HTTP流水线技术对性能的提升并不明显(wiki提到 , 这个问题会在HTTP2.0中解决) 。 另外 , 使用这个技术的还必须是幂等的HTTP方法 , 因为客户端无法得知当前已经处理到什么地步 , 重试后可能发生不可预测的结果 。 POST方法不是幂等的:同样的报文 , 第一次POST跟第二次POST在服务端的表现可能会不一样 。
推荐阅读
- 手机游戏|3年内不得转会FNC!G2老板被爆与C9达成秘密协议,Perkz转会受阻
- 热血传奇|热血传奇:当年心中的巅峰,随便一件无比骄傲
- 手办|原神:“肝帝”再现!玩家花30天自制胡桃手办,手中的护摩亮了
- edg战队|EDG夺冠可谓是小说中的梦幻剧情,先破RNG再废GEN.G,豪虐DK夺冠
- 亚运会|LOL入选亚运会正赛,你心中的阵容怎么选?
- 孙权|三国杀:背景帝!武将皮肤中的最强客串王,孙十万果然名不虚传
- 夏侯惇|王者荣耀之中的“最强坦克”, 夏侯惇和程咬金你更喜欢谁?
- 穿越火线|轻松上手,赶超雷神:盘点CF中那些神枪中的天之骄子
- 明日之后|消逝的光芒2设计师:明日之后打造了我心目中的人尸大决战
- 老玩家|天龙网游:天龙游戏中的神奇玩法,没有经历过别说自己是老玩家