十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
創(chuàng)新互聯(lián)建站服務(wù)項目包括紅河哈尼網(wǎng)站建設(shè)、紅河哈尼網(wǎng)站制作、紅河哈尼網(wǎng)頁制作以及紅河哈尼網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,紅河哈尼網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到紅河哈尼省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
通過以上圖,可以從三個方面來優(yōu)化HTTP的性能。
1.服務(wù)器
衡量服務(wù)器性能的指標(biāo),主要有以下幾個:
a.吞吐量(或TPS、RPS、QPS)
b.并發(fā)數(shù)
c.響應(yīng)時間
d.資源利用率(CPU、內(nèi)存、硬盤、網(wǎng)絡(luò))
-->提高吞吐量,吞吐量越高,服務(wù)器的性能越好!
-->提高并發(fā)數(shù),支持的并發(fā)數(shù)越大,服務(wù)器的性能越好!
-->降低響應(yīng)時間,響應(yīng)時間越短,服務(wù)器的性能越好!
-->合理利用服務(wù)器資源,過高肯定是不行,過低也有可能是存在問題的!
-->Linux服務(wù)器的監(jiān)控工具主要有top、sar、glances等
2.客戶端
因為數(shù)據(jù)都要通過網(wǎng)絡(luò)從服務(wù)器獲取,所以它最基本的性能指標(biāo)就是:延遲。
所謂的“延遲”其實就是“等待”,等待數(shù)據(jù)到達(dá)客戶端時所花費(fèi)的時間。
延遲的原因,有幾點(diǎn):
a.距離:由于地理距離導(dǎo)致的延遲,是無法客服的,比如訪問數(shù)千公里外的網(wǎng)站。
b.帶寬
c.DNS查詢(如果域名在本地沒有緩存的話)
d.TCP握手(必須要經(jīng)過 SYN、SYN/ACK、ACK 三個包之后才能建立連接)
-->對于 HTTP 性能優(yōu)化,有一個專門的測試網(wǎng)站:WebPageTest,或使用瀏覽器的開發(fā)者工具
-->一次 HTTP“請求 - 響應(yīng)”的過程中延遲的時間是非常大的,有可能會占到90%以上
-->所以,客戶端優(yōu)化的關(guān)鍵,降低延遲
3.傳輸鏈路(客戶端和服務(wù)器之間的傳輸鏈路)
使用cdn等技術(shù),總之,要增加帶寬,降低延遲,優(yōu)化傳輸速度。
-----------------------------------------------具體的優(yōu)化手段----------------------------------------------------------
主要是優(yōu)化服務(wù)端的性能。
1.前端:可以利用PageSpeed等工具進(jìn)行檢測并根據(jù)提示進(jìn)行優(yōu)化。
2.后端:主要有以下幾方面
a.硬件、軟件或服務(wù)
比如更換強(qiáng)勁的CPU、內(nèi)存、磁盤、帶寬等,比如使用CDN
b.服務(wù)器選擇、參數(shù)調(diào)優(yōu)
選用高性能的服務(wù)器,比如Nginx,它強(qiáng)大的反向代理能力實現(xiàn)“動靜分離”,動態(tài)頁面交給Tomcat等,靜態(tài)資源交給Nginx
另外,Nginx自身也有可以調(diào)優(yōu)的參數(shù),比如說禁用負(fù)載均衡鎖、增大連接池,綁定 CPU 等
對于 HTTP 協(xié)議一定要啟用長連接,因為TCP 和 SSL 建立新連接的成本非常高,可能會占到客戶端總延遲的一半以上
TCP 的新特性“TCP Fast Open“,類似 TLS 的“False Start”,可以在初次握手的時候就傳輸數(shù)據(jù),盡可能在操作系統(tǒng)和 Nginx 里開啟這個特性,減少外網(wǎng)和內(nèi)網(wǎng)里的握手延遲。
使用HTTP協(xié)議內(nèi)置的“數(shù)據(jù)壓縮”編碼,可以選擇標(biāo)準(zhǔn)的 gzip,也可以嘗試新的壓縮算法 br
不過在數(shù)據(jù)壓縮的時候應(yīng)當(dāng)注意選擇適當(dāng)?shù)膲嚎s率,不是壓縮的越厲害越好
c.緩存
網(wǎng)站系統(tǒng)內(nèi)部,可以使用 Memcache、redis等專門的緩存服務(wù),把計算的中間結(jié)果和資源存儲在內(nèi)存或者硬盤里
Web 服務(wù)器首先檢查緩存系統(tǒng),如果有數(shù)據(jù)就立即返回給客戶端
另外,CDN 的網(wǎng)絡(luò)加速功能就是建立在緩存的基礎(chǔ)之上的,可以這么說,如果沒有緩存,那就沒有 CDN。
利用好緩存功能的關(guān)鍵是理解它的工作原理,為每個資源都添加 ETag 和 Last-modified字段,再用 Cache-Control、Expires 設(shè)置好緩存控制屬性。
其中最基本的是 max-age 有效期,標(biāo)記資源可緩存的時間。對于圖片、CSS 等靜態(tài)資源可以設(shè)置較長的時間,比如一天或者
一個月,對于動態(tài)資源,除非是實時性非常高,也可以設(shè)置一個較短的時間,比如 1 秒或者 5 秒。這樣一旦資源到達(dá)客戶端,就
會被緩存起來,在有效期內(nèi)都不會再向服務(wù)器發(fā)送請求。