HTTP keep-alive的适用性

来源:互联网 发布:挡风玻璃伴侣 淘宝 编辑:程序博客网 时间:2024/05/20 01:10
   keep-alive可以让TCP连接被复用,避免不必要的断开与重新连接。从这个设定上看它绝对是个好东西,但并不是所有连接都适合用keep-alive。在不适合keep-alive的场景使用keep-alive反而会带来负面影响。它实际上就是一种以内存换取网络的策略。
  当一个页面打开时,页面需要请求js、css以及页面上的图片等。网络请求是需要时间的,这些请求不会瞬间完成,但他们却是瞬间发起的。浏览器的并发数限制一般允许6个并发请求,客户端需要的前6个资源会被同时使用不同的连接向服务器发起请求。如果服务器对所有请求都使用keep-alive,那么打开一个页面就相当于建立6个长连接。如果页面上需要加载的资源很多,或者程序有多个连接同时使用的需求,这个6个连接当然可以有效的复用。但如果需要加载的资源少于6个呢?这就意味着,这些连接一次都不会被复用到,而服务器却需要维持这个连接。这种情况keep-alive就没有作用了。
  普通的网页通常都会超过6个资源需要加载,网页中存在大量图片是很正常的。但如果这资源开启了cache,也就是说页面二次访问时他们不会重新发起请求,那么页面需求的资源就很有可能小于6个,这种情况下keep-alive就成了个累赘。所以使用keep-alive时也要考虑缓存方面的设置,对于特殊的情况可能需要服务器判断是否要为特定连接使用keep-alive。
  keep-alive可以自己控制超时的时间。注意这个时间不是整个连接的寿命,而是当这个连接空闲那么个时间后自动断开。对于普通的静态资源请求使用5到15秒超时的keep-alive比较合适,这些时间主要用于弥补网络延迟。浏览器对这些资源的访问是接踵而至的,中间几乎不会有间隔的时间,所以完全没必要太长的超时。对于一些程序连接也同样可以使用这样的短超时,比如上一篇文章中的keep-alive和长轮询一起使用的情况。总之,只要请求是接连不断的向服务器发起的,超时就没必要太长。
  对于特定的程序,也可以设置个比较长的超时。这种情况就应该考虑一个成本问题。是先断开连接等到需要时重新建立,还是让服务器维持一段时间的连接。前者的开销在于网络,后者的开销在于内存,这就比较不好把握了。比如一个瀑布流的页面,滚动条拖到末尾会自动加载内容,这时可能就会用一个超时比较长的keep-alive,因为用户很可能会继续加载更多,但是在此之前会先浏览已经加载了的数据。
  最后总结一下,在请求多而连续时适合使用keep-alive,其它情况一般没必要使用,如果非要使用就得斟酌超时的设定。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 戴眼镜鼻梁塌了怎么办 站的时间长了腿疼怎么办 小孩腿筋拉伤了怎么办 走多了小腿骨疼怎么办 走多了一个腿疼怎么办 走太多路腿酸痛怎么办 老年人脚肿并痛怎么办 孩子蛙跳肌后大腿痛怎么办 走路久了腿酸怎么办 走路多了膝盖痛怎么办 走路多了小腿痛怎么办 走多了腿疼怎么办 小腿走多了酸痛怎么办 腿肚受凉了酸痛怎么办 晚上腿疼的睡不着觉怎么办 走路走多了腿酸怎么办 跳完蛙跳大腿疼怎么办 走路走多了脚疼怎么办 走太多路脚酸痛怎么办 走路走的腿酸痛怎么办 路走得太多腿疼怎么办 走路走的足弓疼怎么办 走路走多了膝盖怎么办 2岁宝宝走路一只脚内八字怎么办 6岁宝宝o型腿怎么办 一岁宝宝o型腿怎么办 宝宝一岁o型腿怎么办 宝宝一周两个月走路弓着腿怎么办 宝宝腿走路膝盖弯曲怎么办 两岁宝宝不爱走路怎么办 水鸭子脚不能走了怎么办 鸭子坐着脚走不动怎么办 鸭子步走了腿疼怎么办? 跳爵士舞没感觉怎么办 军校学员体能考核不达标怎么办 俯卧撑新兵连做不动怎么办 宝宝胆小不敢上体能课怎么办 28岁老太太抬头纹剩两颗怎么办 大腿前侧抽筋痛怎么办 电脑看片缓冲慢怎么办 跑步跑的腿疼怎么办