<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # HTTP HTTP 分為 HTTP1.0 和 HTTP1.1 兩個版本。 ## 生命周期 #### HTTP 1.0 HTTP 的生命周期通過 Request 來界定,也就是一個 Request 一個 Response ,那么在 HTTP1.0 中,這次HTTP請求就結束了。 #### HTTP 1.1 對 HTTP 1.0 進行了改進,使得有一個 keep-alive,也就是說,在一個HTTP連接中,可以發送多個Request,接收多個Response。 > 但是,Request = Response,在 HTTP 中永遠是這樣,也就是說一個 request 只能有一個 response。而且這個 response 也是被動的,不能主動發起。 ## http 方式的實時獲取信息(仿 WebSOcket) ### http long poll `long poll` 其實原理跟 ajax輪詢 差不多,都是采用輪詢的方式。 不過采取的是阻塞模型(一直打電話,沒收到就不掛電話),也就是說,客戶端發起連接后,如果沒消息,就一直不返回Response給客戶端。 直到有消息才返回,返回完之后,客戶端再次建立連接,周而復始。 ### ajax 輪詢 ajax輪詢的原理非常簡單,讓瀏覽器隔個幾秒就發送一次請求,詢問服務器是否有新信息。 > 無論是 http long poll 還是 ajax 輪詢都是被動的,都是由客戶端不停的發起請求,都是非常消耗資源的。 > 不同的是,ajax輪詢 需要服務器有很快的處理速度和資源(速度)。 而,long poll 需要有很高的并發,也就是說同時接待客戶的能力。 > 而且,http連接是無狀態的,每次連接都是一個新的連接。 ## HTTP1.0 和 HTTP1.1 和 HTTP2.0 的區別 ### HTTP1.0 和 HTTP1.1 主要區別 - 長連接 HTTP 1.0需要使用keep-alive參數來告知服務器端要建立一個長連接,而HTTP1.1默認支持長連接。 HTTP是基于TCP/IP協議的,創建一個TCP連接是需要經過三次握手的,有一定的開銷,如果每次通訊都要重新建立連接的話,對性能有影響。因此最好能維持一個長連接,可以用個長連接來發多個請求。 - 節約帶寬 HTTP 1.1支持只發送header信息(不帶任何body信息),如果服務器認為客戶端有權限請求服務器,則返回100,否則返回401。客戶端如果接受到100,才開始把請求body發送到服務器。這樣當服務器返回401的時候,客戶端就可以不用發送請求body了,節約了帶寬。 另外HTTP1.1還支持傳送內容的一部分。這樣當客戶端已經有一部分的資源后,只需要跟服務器請求另外的部分資源即可。這是支持文件斷點續傳的基礎。 - HOST 域 現在可以web server例如tomat,設置虛擬站點是非常常見的,也即是說,web server上的多個虛擬站點可以共享同一個ip和端口。 HTTP1.0是沒有host域的,HTTP1.1才支持這個參數。 ### HTTP1.1 和 HTTP2.0 主要區別 - 多路復用 HTTP2.0使用了多路復用的技術,做到同一個連接并發處理多個請求,而且并發請求的數量比HTTP1.1大了好幾個數量級。 當然HTTP1.1也可以多建立幾個TCP連接,來支持處理更多并發的請求,但是創建TCP連接本身也是有開銷的。 TCP連接有一個預熱和保護的過程,先檢查數據是否傳送成功,一旦成功過,則慢慢加大傳輸速度。因此對應瞬時并發的連接,服務器的響應就會變慢。所以最好能使用一個建立好的連接,并且這個連接可以支持瞬時并發的請求。 > 二進制分幀,在 應用層(HTTP/2)和傳輸層(TCP or UDP)之間增加一個二進制分幀層,在這個二進制分幀層,所有傳輸的消息被分為更小的消息和幀,并對它們采用二進制編碼,其中 http1.x的首部信息會被封裝到HEADER frame,而相應的 request body 則被封裝到 DATA frame 中。在建立連接之初,http2.0會限制連接的速度,當數據傳輸成功后,會逐步增大信息傳輸的速度。 - 數據壓縮 HTTP1.1不支持header數據的壓縮,HTTP2.0使用 `HPACK算法` 對header的數據進行壓縮,這樣數據體積小了,在網絡上傳輸就會更快。 - 服務器推送 意思是說,當我們對支持HTTP2.0的web server請求數據的時候,服務器會順便把一些客戶端需要的資源一起推送到客戶端,免得客戶端再次創建連接發送請求到服務器端獲取。這種方式非常合適加載靜態資源。 http1.x 服務端只能對一個請求發生一個 response,但是 http2.0 可以對一個 request 返回多個 response。 > HTTP2.0 [參考文章](https://imququ.com/post/http2-resource.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看