天天看點

Nginx學習之合并請求連接配接加速網站通路

作為這個世界上最好的web伺服器之一,nginx的優勢不明而喻。下面來講講,nginx是如何合并請求連接配接的。

當我們在浏覽網頁的時候,對浏覽速度有一個重要的影響因素,就是浏覽器的并發數量。并發數量簡單通俗的講就是,當浏覽器網頁的時候同時工作的進行數量。

當然浏覽器的并發請求數目限制是針對同一域名的,同一時間針對同一域名下的請求有一定數量限制,超過限制數目的請求會被阻塞。

首先我們看下各個浏覽器的并發連接配接數:

Nginx學習之合并請求連接配接加速網站通路

羅列一下浏覽器這麼決定可能有什麼考慮

由于tcp 協定的限制,pc 端隻有65536個端口可用以向外部發出連接配接,而作業系統對半開連接配接數也有限制以保護作業系統的 tcpip 協定棧資源不被迅速耗盡,是以浏覽器不好發出太多的 tcp 連接配接,而是采取用完了之後再重複利用 tcp 連接配接或者幹脆重建立立 tcp 連接配接的方法。

如果采用阻塞的套接字模型來建立連接配接,同時發出多個連接配接會導緻浏覽器不得不多開幾個線程,而線程有時候算不得是輕量級資源,畢竟做一次上下文切換開銷不小。

這是浏覽器作為一個有良知的用戶端在保護伺服器。就像以太網的沖突檢測機制,用戶端在使用公共資源的時候必須要自行決定一個等待期。當超過2個用戶端要使用公共資源時,強勢的那個邪惡的用戶端可能會導緻弱勢的用戶端完全無法通路公共資源。從前迅雷被噴就是因為它不是一個有良知的用戶端,它作為 http 協定用戶端沒有考慮到伺服器的壓力,作為 bt 用戶端沒有考慮到自己回饋上傳量的義務。

我們在通路有些網站的時候,會看到代碼中的部分js和css檔案是通過一次請求擷取的,上面的小知識知道浏覽器請求的并發數量是有限制的,但是如果把多條記錄合并一次請求就可能會加快響應速度。

淘寶使用的tengine是基于nginx的web伺服器,從11年底開源。開源子產品nginx-http-concat,可以合并多個檔案在一個響應封包中。

初次安裝第三方子產品nginx-http-concat

配置編譯安裝

如果已經安裝過nginx,隻是配置第三方插件。nginx -v,檢查一下nginx的版本,如果沒有,下載下傳對應的版本。

執行一下代碼即可。

編譯成功以後

殺掉nginx,重新開機即可。

在location段增加如下配置:

合并方式

繼續閱讀