版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 云客網(wǎng) 您網(wǎng)站的流量加油站 淺談?dòng)蛎l(fā)散與域名收斂 性能優(yōu)化一直是前端工作中十分重要的一環(huán),都說從 10 到 1 容易,從 1 到 0 很難。而隨著前端技術(shù)的飛速發(fā)展,沒有什么技術(shù)或者法則是金科玉律一沉不變的。很佩服那些勇于挑戰(zhàn)權(quán)威,推陳出新的勇者,是他們讓我們的技術(shù)不斷的變革更加的卓越。好像扯遠(yuǎn)了,本文主要想談?wù)剝蓚€(gè)名詞,域名發(fā)散和域名收斂。域名發(fā)散這個(gè)很好理解,前端er都知道,PC 時(shí)代為了突破瀏覽器的域名并發(fā)限制,遵循這樣一條定律:· http 靜態(tài)資源采用多個(gè)子域名嗯,為什么要這樣做呢,目的是充分利用現(xiàn)代瀏覽器的多線程并發(fā)下載能力。 由于瀏覽器的限制,每個(gè)瀏覽器,允許對(duì)每個(gè)
2、域名的連接數(shù)一般是有上限的,附圖一枚:上圖展示了各瀏覽器的并行連接數(shù)(同域名),可以看到在一些現(xiàn)代瀏覽器內(nèi)每個(gè) hostname 的最大連接數(shù)基本都是6個(gè),IE 稍顯傲嬌,總體而言并發(fā)數(shù)不高。 所以 PC 時(shí)代對(duì)靜態(tài)資源優(yōu)化時(shí),通常將靜態(tài)資源分布在幾個(gè)不同域,保證資源最完美地分域名存儲(chǔ),以提供最大并行度,讓客戶端加載靜態(tài)資源更為迅速。另外,為什么瀏覽器要做并發(fā)限制呢?1、究其根本原因,在以前,服務(wù)器的負(fù)載能力差,稍微流量大一點(diǎn)服務(wù)器就容易就崩潰。 所以為了保護(hù)服務(wù)器不被強(qiáng)暴到崩潰,瀏覽器要對(duì) max connections(最大并發(fā)數(shù))進(jìn)行限制。如果每個(gè)用戶的最大并發(fā)數(shù)不限制的話,服務(wù)器的負(fù)載
3、能力會(huì)大幅下降。 2、另外還有一個(gè)方面就是, 防止 DDOS 攻擊。最基本的 DoS 攻擊就是利用合理的服務(wù)請(qǐng)求來占用過多的服務(wù)資源,從而使合法用戶無法得到服務(wù)的響應(yīng)。如果不限制并發(fā)請(qǐng)求數(shù)量,后果,啊哦,你懂的。域名收斂本文的重點(diǎn)是想談?wù)動(dòng)蛎諗?,顧名思義,域名收斂的意思就是建議將靜態(tài)資源只放在一個(gè)域名下面,而非發(fā)散情況下的多個(gè)域名下。上面也說到了,域名發(fā)散可以突破瀏覽器的域名并發(fā)限制,那么為要反其道而行之呢?因?yàn)橐虻刂埔耍煌闆r區(qū)別對(duì)待,域名發(fā)散是 PC 時(shí)代的產(chǎn)物,而現(xiàn)在進(jìn)入移動(dòng)互聯(lián)網(wǎng)時(shí)代,通過無線設(shè)備訪問網(wǎng)站,App的用戶已占據(jù)了很大一部分比重,而域名發(fā)散正是在這種情況下提出
4、的。且聽我一步步分析。 http 請(qǐng)求過程首先要知道,使用一個(gè) http 請(qǐng)求去請(qǐng)求一個(gè)資源時(shí),會(huì)經(jīng)歷些什么。簡單而言:1、DNS 域名解析 -> 2、發(fā)起 TCP 的 3 次握手 -> 3、建立 TCP 連接后發(fā)起 http 請(qǐng)求 -> 4、服務(wù)器響應(yīng) http 請(qǐng)求5、.略在這里第一步,也是關(guān)鍵的第一步 DNS 解析,在移動(dòng)端的 http 請(qǐng)求耗時(shí)中,DNS 解析占據(jù)了大部分時(shí)間。 說 DNS 域名解析過程前,再科普一下域名結(jié)構(gòu)。 域名結(jié)構(gòu)域名的結(jié)構(gòu)(或者叫命名空間)是一
5、個(gè)樹狀結(jié)構(gòu),有樹就得有根,這個(gè)根是一個(gè)點(diǎn).(dot)。以 為例,完整的形式應(yīng)該是 . ,注意最后一個(gè)點(diǎn),就是根結(jié)點(diǎn) root ,只不過平時(shí)是瀏覽器或者系統(tǒng)的解析器自動(dòng)幫我們補(bǔ)全了。我們要想獲取根域都有那些,可以在終端下直接使用 dig 命令(需要安裝 dig 指令),如下: 可以看到有 13 個(gè),大部分都是在國外,根節(jié)點(diǎn)之后就是頂級(jí)域名,就是.cn .com .gov 這些,頂級(jí)域劃分為通用頂級(jí)域 (com、org、net 等)和國家與地區(qū)頂級(jí)域(cn、hk、us、tw 等)。我們可以繼續(xù)使用 dig 查看一下 頂級(jí)域名的
6、解析路徑,加上 +trace 參數(shù)選項(xiàng),意思是追蹤 DNS 解析過程,如下: 可以看到是先到根節(jié)點(diǎn),再查找到 com ,就是根結(jié)點(diǎn)會(huì)告知下一個(gè)結(jié)點(diǎn) com 在哪:就是 com. 172800 IN NS a-m.gtld-。 ok,頂級(jí)域之后就是我們熟知的一級(jí)域名,譬如 中的 example 就是一級(jí)域 。有興趣的可以自己試著用 dig 指令再追蹤一下:dig . +trace ,可以看到是從根節(jié)點(diǎn)從右向左逐步查找的。 NS 為何上面兩張 dig 命令貼圖中間出現(xiàn)了很多次 NS ,NS 即是 NameSer
7、ver,大部分情況下又叫權(quán)威名稱服務(wù)器簡稱權(quán)威。什么是權(quán)威呢,通俗點(diǎn)講其實(shí)是某些域的權(quán)威,也就是權(quán)威上面有這些域的最新,最全的數(shù)據(jù),所有這些域的數(shù)據(jù)都應(yīng)該以此為準(zhǔn)(只有權(quán)威可以增刪改這些域的數(shù)據(jù)),就像上面 dig com +trace 的結(jié)果可以看到,com 的權(quán)威是上面的 13 個(gè)根域。同理,所有的頂級(jí)域(cn、org、net 等等)的權(quán)威都是根域。 DNS 解析其實(shí)上面就是 DNS 解析的一個(gè)大致過程,即迭代解析,但是不是很詳盡,一個(gè)完整的 DNS 解析過程如下:Step1: 首先拿到 URL 后,瀏覽器會(huì)尋找本地的 DNS 緩存,看看是否有對(duì)應(yīng)的 IP
8、 地址,如果緩存中存在那就好了,如果沒有,那就得向 DNS Server 發(fā)送一個(gè)請(qǐng)求,找到你想要的 IP 地址。Step2: 首先他會(huì)向你的 ISP(互聯(lián)網(wǎng)服務(wù)提供商) 相關(guān)的 DNS servers 發(fā)送 DNS query。然后這些 DNS 進(jìn)行遞歸查詢(recursive)。所謂的遞歸查詢,就是能夠直接返回對(duì)應(yīng)的IP地址,而不是其他的 DNS server 地址。Step3: 如果上述的 DNS Servers 沒有你要的域名地址,則就會(huì)發(fā)送迭代查詢,即會(huì)先從 root nameservers 找起。 即是假如你要查詢 ,會(huì)先從包含根結(jié)點(diǎn)的 13 臺(tái)最高
9、級(jí)域名服務(wù)器開始。Step4: 接著,以從右向左的方式遞進(jìn),找到 com. 然后向包含 com 的 TLD(頂級(jí)域名) nameservers 發(fā)送 DNS 請(qǐng)求。接著找到包含 example 的 DNS server。Step5: 現(xiàn)在進(jìn)入到了 部分,即是現(xiàn)在正在詢問的是權(quán)威服務(wù)器,該服務(wù)器里面包含了你想要的域名信息,也就是拿到了最后的結(jié)果 record 。Step6: 遞歸查詢的 DNS Server 接受到這 record 之后, 會(huì)將該record 保存一份到本地。 如果下一次你再請(qǐng)求這個(gè) domain
10、時(shí),我就可以直接返回給你了。由于每條記錄都會(huì)存在 TLL ,所以 server 每隔一段時(shí)間都會(huì)發(fā)送一次請(qǐng)求,獲取新的 record,Step7: 最后,再經(jīng)由最近的 DNS Server 將該條 record 返回。 同樣,你的設(shè)備也會(huì)存一份該 record 的副本。 之后,就是 TCP 的事了,下面是一張萌萌的簡化圖:到這里,我們大致就可以梳理一下,迭代查詢的過程如下:流程: . => com. => . => . => IP adress
11、160; TTL 為何TTL 是 Time To Live 的縮寫,該字段指定 IP 包被路由器丟棄之前允許通過的最大網(wǎng)段數(shù)量。TTL 是 IPv4 包頭的一個(gè) 8 bit 字段。簡單的說它表示 DNS 記錄在 DNS 服務(wù)器上緩存時(shí)間。扯了這么多 http 請(qǐng)求, DNS 解析,回到正題域名收斂上,從上面可以看到,DNS 解析其實(shí)是一個(gè)很復(fù)雜的過程,在 PC 上,我們采用域名發(fā)散策略,是因?yàn)樵?#160;PC 端上,DNS 解析通常而言只需要幾十 ms ,可以接受。而移動(dòng)端,2G 網(wǎng)絡(luò),3G網(wǎng)絡(luò),4G網(wǎng)絡(luò)/wifi 強(qiáng)網(wǎng),而且移動(dòng) 4G 容易在信號(hào)不理想的地段降級(jí)成 2G ,通過大
12、量的數(shù)據(jù)采集和真實(shí)網(wǎng)絡(luò)抓包分析(存在DNS解析的請(qǐng)求),DNS的消耗相當(dāng)可觀,2G網(wǎng)絡(luò)大量5-10s,3G網(wǎng)絡(luò)平均也要3-5s(數(shù)據(jù)來源于淘寶)。 下面附上在 2G,3G,4G, WIFI 情況下 DNS 遞歸解析的時(shí)間 (ms):因?yàn)樵谠黾佑虻耐瑫r(shí),往往會(huì)給瀏覽器帶來 DNS 解析的開銷。所以在這種情況下,提出了域名收斂,減少域名數(shù)量可以降低 DNS 解析的成本。下圖是手機(jī)端頁面加載數(shù)和域名分散數(shù)的關(guān)系(from Mobify Developer): 在 2 個(gè)域名分散條件下,網(wǎng)頁的加載速度提升較大,而第 3 個(gè)以后就比較慢了。 所以,一般來說,域名分散的數(shù)量
13、最好在 3 以下。 SPDY 本來至此,本文應(yīng)該結(jié)束了,談了下域名發(fā)散與域名收斂。但是,單純的在移動(dòng)端采用域名收斂并不能很大幅度的提升性能,很重要的一點(diǎn)是,在移動(dòng)端建連的消耗非常大,而 SPDY 協(xié)議可以完成多路復(fù)用的加密全雙工通道,顯著提升非wifi環(huán)境下的網(wǎng)絡(luò)體驗(yàn)。俗話說,好刀配好鞘,好馬配好鞍,當(dāng)域名收斂配合 SPDY 才能最大程度發(fā)揮他們的效用,達(dá)到事半功倍。 那么什么是 SPDY?SPDY,一種開放的網(wǎng)絡(luò)傳輸協(xié)議,由Google開發(fā),用來發(fā)送網(wǎng)頁內(nèi)容?;趥鬏斂刂茀f(xié)議(TCP)的應(yīng)用層協(xié)議 ,是 HTT
14、P/2 的前身。SPDY 的作用就是,在不增加域名的情況下,解除最大連接數(shù)的限制。主要的特點(diǎn)就是多路復(fù)用,他的目的就是致力于取消并發(fā)連接上限。那么相比 http, SPDY 具體的優(yōu)勢(shì)在哪里呢:1. 多路復(fù)用 請(qǐng)求優(yōu)化SPDY 規(guī)定在一個(gè) SPDY 連接內(nèi)可以有無限個(gè)并行請(qǐng)求,即允許多個(gè)并發(fā) HTTP 請(qǐng)求共用一個(gè) TCP會(huì)話。這樣 SPDY 通過復(fù)用在單個(gè) TCP 連接上的多次請(qǐng)求,而非為每個(gè)請(qǐng)求單獨(dú)開放連接,這樣只需建立一個(gè) TCP 連接就可以傳送網(wǎng)頁上所有資源,不僅可以減少消息交互往返的時(shí)間還可以避免創(chuàng)建新連接造成的延遲,使得 TCP 的效率更高。此外,SPDY 的多路復(fù)用可以設(shè)置優(yōu)先級(jí)
15、,而不像傳統(tǒng) HTTP 那樣嚴(yán)格按照先入先出一個(gè)一個(gè)處理請(qǐng)求,它會(huì)選擇性的先傳輸 CSS 這樣更重要的資源,然后再傳輸網(wǎng)站圖標(biāo)之類不太重要的資源,可以避免讓非關(guān)鍵資源占用網(wǎng)絡(luò)通道的問題,提升 TCP 的性能。2. 支持服務(wù)器推送技術(shù)服務(wù)器可以主動(dòng)向客戶端發(fā)起通信向客戶端推送數(shù)據(jù),這種預(yù)加載可以使用戶一直保持一個(gè)快速的網(wǎng)絡(luò)。3. SPDY 壓縮了 HTTP 頭舍棄掉了不必要的頭信息,經(jīng)過壓縮之后可以節(jié)省多余數(shù)據(jù)傳輸所帶來的等待時(shí)間和帶寬。4. 強(qiáng)制使用 SSL 傳輸協(xié)議Google 認(rèn)為 Web 未來的發(fā)展方向必定是安全的網(wǎng)絡(luò)連接,全部請(qǐng)求 SSL 加密后,信息傳輸更加安全??纯?SPDY 的作用圖:SPDY 協(xié)議在性能上對(duì) HTTP 做了很大的優(yōu)化,其核心思想是盡量減少連接個(gè)數(shù),而對(duì)于 HTTP 的語義并沒有做太大的修改。具體來說
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銅鋁桿生產(chǎn)工操作能力競賽考核試卷含答案
- 電子產(chǎn)品制版工崗前安全理論考核試卷含答案
- 合成氨生產(chǎn)工操作競賽考核試卷含答案
- 2024年承德護(hù)理職業(yè)學(xué)院輔導(dǎo)員招聘考試真題匯編附答案
- 碳五正異構(gòu)分離裝置操作工復(fù)試水平考核試卷含答案
- 水產(chǎn)制品精制工崗前道德考核試卷含答案
- 2024年海南政法職業(yè)學(xué)院輔導(dǎo)員招聘考試真題匯編附答案
- 2024年淶源縣招教考試備考題庫附答案
- 2024年鄭州商貿(mào)旅游職業(yè)學(xué)院輔導(dǎo)員招聘考試真題匯編附答案
- 2025年三明學(xué)院輔導(dǎo)員考試筆試題庫附答案
- 河南豫能控股股份有限公司及所管企業(yè)2026屆校園招聘127人考試備考題庫及答案解析
- 2026浙江寧波市鄞州人民醫(yī)院醫(yī)共體云龍分院編外人員招聘1人筆試參考題庫及答案解析
- (2025年)新疆公開遴選公務(wù)員筆試題及答案解析
- 物業(yè)管家客服培訓(xùn)課件
- 直銷公司旅游獎(jiǎng)勵(lì)方案
- 解除勞動(dòng)合同證明電子版(6篇)
- 呼吸科規(guī)培疑難病例討論
- 有關(guān)中國居民死亡態(tài)度的調(diào)查報(bào)告
- 核對(duì)稿100和200單元概述
- 醫(yī)學(xué)統(tǒng)計(jì)學(xué)(12)共143張課件
- 特種設(shè)備安全檢查臺(tái)賬
評(píng)論
0/150
提交評(píng)論