HTTP性能優化

經過以上圖,能夠從三個方面來優化HTTP的性能。html

1.服務器前端

衡量服務器性能的指標,主要有如下幾個:算法

a.吞吐量(或TPS、RPS、QPS)後端

b.併發數瀏覽器

c.響應時間緩存

d.資源利用率(CPU、內存、硬盤、網絡)性能優化

-->提升吞吐量,吞吐量越高,服務器的性能越好!服務器

-->提升併發數,支持的併發數越大,服務器的性能越好!網絡

-->下降響應時間,響應時間越短,服務器的性能越好!併發

-->合理利用服務器資源,太高確定是不行,太低也有多是存在問題的!

-->Linux服務器的監控工具主要有top、sar、glances等

2.客戶端

由於數據都要經過網絡從服務器獲取,因此它最基本的性能指標就是:延遲。

所謂的「延遲」其實就是「等待」,等待數據到達客戶端時所花費的時間。

延遲的緣由,有幾點:

a.距離:因爲地理距離致使的延遲,是沒法客服的,好比訪問數千千米外的網站。

b.帶寬

c.DNS查詢(若是域名在本地沒有緩存的話)

d.TCP握手(必需要通過 SYN、SYN/ACK、ACK 三個包以後才能創建鏈接)

-->對於 HTTP 性能優化,有一個專門的測試網站:WebPageTest,或使用瀏覽器的開發者工具

-->一次 HTTP「請求 - 響應」的過程當中延遲的時間是很是大的,有可能會佔到90%以上

-->因此,客戶端優化的關鍵,下降延遲

3.傳輸鏈路(客戶端和服務器之間的傳輸鏈路)

使用CDN等技術,總之,要增長帶寬,下降延遲,優化傳輸速度。


-----------------------------------------------具體的優化手段----------------------------------------------------------

主要是優化服務端的性能。

1.前端:能夠利用PageSpeed等工具進行檢測並根據提示進行優化。

2.後端:主要有如下幾方面

a.硬件、軟件或服務

好比更換強勁的CPU、內存、磁盤、帶寬等,好比使用CDN

b.服務器選擇、參數調優

選用高性能的服務器,好比Nginx,它強大的反向代理能力實現「動靜分離」,動態頁面交給Tomcat等,靜態資源交給Nginx

另外,Nginx自身也有能夠調優的參數,好比說禁用負載均衡鎖、增大鏈接池,綁定 CPU 等

對於 HTTP 協議必定要啓用長鏈接,由於TCP 和 SSL 創建新鏈接的成本很是高,可能會佔到客戶端總延遲的一半以上

TCP 的新特性「TCP Fast Open「,相似 TLS 的「False Start」,能夠在初次握手的時候就傳輸數據,儘量在操做系統和 Nginx 裏開啓這個特性,減小外網和內網裏的握手延遲。


使用HTTP協議內置的「數據壓縮」編碼,能夠選擇標準的 gzip,也能夠嘗試新的壓縮算法 br

不過在數據壓縮的時候應當注意選擇適當的壓縮率,不是壓縮的越厲害越好

c.緩存

網站系統內部,可使用 Memcache、Redis等專門的緩存服務,把計算的中間結果和資源存儲在內存或者硬盤裏

Web 服務器首先檢查緩存系統,若是有數據就當即返回給客戶端

另外,CDN 的網絡加速功能就是創建在緩存的基礎之上的,能夠這麼說,若是沒有緩存,那就沒有 CDN。

利用好緩存功能的關鍵是理解它的工做原理,爲每一個資源都添加 ETag 和 Last-modified字段,再用 Cache-Control、Expires 設置好緩存控制屬性。

其中最基本的是 max-age 有效期,標記資源可緩存的時間。對於圖片、CSS 等靜態資源能夠設置較長的時間,好比一天或者

一個月,對於動態資源,除非是實時性很是高,也能夠設置一個較短的時間,好比 1 秒或者 5 秒。這樣一旦資源到達客戶端,就

會被緩存起來,在有效期內都不會再向服務器發送請求。

相關文章
相關標籤/搜索