zoukankan      html  css  js  c++  java
  • 长连接的定义及其优缺点,以及在不同的浏览器中的支持情况

        长连接应该翻译为keep-alive connection,或者是 persistent connection,而不是我们直译为Long Connection,否则你在英文文档中不好查到这方面的资料的,以下是维基百科针对长连接的说明:

        http://en.wikipedia.org/wiki/HTTP_persistent_connection

        以下是我的部分翻译:

        HTTP长连接(持久化连接)

            以下是一张连接与接连接的区别

                    
    HTTP长连接,英文的说话有这么几种:HTTP persistent connection、HTTP keep-alive或者 HTTP connection reuse,是用来在一个TCP连接的基础之上,发送多个HTTP请求以及接收多个HTTP响应,这是为了避免每一次请求都去打开一个新的连接。
    在HTTP 1.0标准的时候,关于如何保持是没有官方标准支持长连接,这个时候客户端和服务端如果需要建立长连接,那客户端的发起请求的时候,就需要在请求头中带一个表示长连接请求头:
    Connection: Keep-Alive
    如果服务端同意长连接请求,那么服务端在返回头中增加响应头:
    Connection: Keep-Alive
    这样就建立了一个长连接,当客户端与服务端的某一方或者同时关闭连接的时候,或者网络原因,这个连接才会断掉。
    在HTTP 1.1标准中,所有的请求都认为是长连接,这个时候HTTP长连接的建立不再需要标识单独的长连接信息。然而,在apache2.0中默认的连接超时时间是15秒,而2.2中默认是5秒,减少超时时间是为了服务器能够响更多的请求。
    长连接的优点
    1、减少CPU及内存的使用,因为不需要经常的建立及关闭连接,当然高峰并发时CPU及内存也是比较多的;
    2、2、允许HTTP pipelining(HTTP 1.1中支持)的请求及响应模式:
    为了便于理解HTTP pipelining,参见下图:


    3、减少网络的堵塞,因为减少了TCP请求;
    4、减少后续请求的响应时间,因为此时不需要建立TCP,也不需要TCP握手等过程;
    5、当发生错误时,可以在不关闭连接的情况下进行提示;
    根据RFC 2616 (page 46)的标准定义,单个客户端不允许开启2个以上的长连接,这个标准的目的是减少HTTP响应的时候,减少网络堵塞。
    长连接的缺点:可能会损害服务器的整体性能,如apache的长连接时间的长短,直接影响到服务器的并发数。
    长连接在浏览器中的使用情况
    Netscape从4.05开始支持,Netscape不是通过timeout来关闭长连接,它是将空闲连接放置到一个队列中,当有需要向其它服务端建立长连接时,这个时候,它根据LRU(Least Recently Used)算法进行处理,即将最使少使用的空闲连接KILL掉;
    IE从4.0.1开始支持,IE6、7只支持两个长连接,IE8支持6个,IE 60秒为默认的超时时间,这个值可以在注册表中修改;
    FF类似IE通过timeout管理长连接,不过,默的是115秒,这个是可能通过配置进行更改的;
    Opera从4.0开始支持长连接,长连接数可以自定义;

    本文出自:冯立彬的博客


    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 相关阅读:
    求大神回答这个管理系统不知道为啥不成功急!
    这个函数到底什么意思如何调用
    判断浮点数是否为零的问题
    字符串与列表的 常用方法
    变量名命名规范 运算符 流程控制
    ACM C++
    struts s:iterator循环遍历数据 自动生成序号
    JAVA将一个EXCEL多行订单产品字符串分解成一个个子订单 +连接符连接
    JS在HTML中获取到所有选中的checkbox的值
    自己做的java-WEB项目。希望360浏览器能够默认使用极速模式打开
  • 原文地址:https://www.cnblogs.com/skiwdhwhssh/p/10340678.html
Copyright © 2011-2022 走看看