日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

淺談?dòng)蛎諗颗c域名發(fā)散

性能優(yōu)化一直是前端工作中十分重要的一環(huán),都說(shuō)從 10 到 1 容易,從 1 到 0 很難 。而隨著前端技術(shù)的飛速發(fā)展,沒(méi)有什么技術(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è)域名的連接數(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ā)限制呢?
究其根本原因,在以前,服務(wù)器的負(fù)載能力差,稍微流量大一點(diǎn)服務(wù)器就容易就崩潰 。所以為了保護(hù)服務(wù)器不被強(qiáng)暴到崩潰,瀏覽器要對(duì) max connections(最大并發(fā)數(shù))進(jìn)行限制 。如果每個(gè)用戶的最大并發(fā)數(shù)不限制的話,服務(wù)器的負(fù)載能力會(huì)大幅下降 。
另外還有一個(gè)方面就是, 防止 DDOS 攻擊 。最基本的 DoS 攻擊就是利用合理的服務(wù)請(qǐng)求來(lái)占用過(guò)多的服務(wù)資源,從而使合法用戶無(wú)法得到服務(wù)的響應(yīng) 。如果不限制并發(fā)請(qǐng)求數(shù)量,后果,啊哦,你懂的 。
域名收斂
本文的重點(diǎn)是想談?wù)動(dòng)蛎諗?,顧名思義,域名收斂的意思就是建議將靜態(tài)資源只放在一個(gè)域名下面,而非發(fā)散情況下的多個(gè)域名下 。
上面也說(shuō)到了,域名發(fā)散可以突破瀏覽器的域名并發(fā)限制,那么為要反其道而行之呢?因?yàn)橐虻刂埔?,不同情況區(qū)別對(duì)待,域名發(fā)散是 PC 時(shí)代的產(chǎn)物,而現(xiàn)在進(jìn)入移動(dòng)互聯(lián)網(wǎng)時(shí)代,通過(guò)無(wú)線設(shè)備訪問(wèn)網(wǎng)站,App的用戶已占據(jù)了很大一部分比重,而域名收斂正是在這種情況下提出的 。且聽(tīng)我一步步分析 。
http 請(qǐng)求過(guò)程
首先要知道,使用一個(gè) http 請(qǐng)求去請(qǐng)求一個(gè)資源時(shí),會(huì)經(jīng)歷些什么 。簡(jiǎn)單而言:
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í)間 。
說(shuō) DNS 域名解析過(guò)程前,再科普一下域名結(jié)構(gòu) 。
域名結(jié)構(gòu)
域名的結(jié)構(gòu)(或者叫命名空間)是一個(gè)樹(shù)狀結(jié)構(gòu),有樹(shù)就得有根,這個(gè)根是一個(gè)點(diǎn)‘.’(dot) 。
以 www.example.com 為例,完整的形式應(yīng)該是 www.example.com. ,注意最后一個(gè)點(diǎn),就是根結(jié)點(diǎn) root ,只不過(guò)平時(shí)是瀏覽器或者系統(tǒng)的解析器自動(dòng)幫我們補(bǔ)全了 。我們要想獲取根域都有那些,可以在終端下直接使用 dig 命令(需要安裝 dig 指令),如下:
可以看到有 13 個(gè),大部分都是在國(guó)外,根節(jié)點(diǎn)之后就是頂級(jí)域名,就是.cn .com .gov 這些,頂級(jí)域劃分為通用頂級(jí)域 (com、org、net 等)和國(guó)家與地區(qū)頂級(jí)域(cn、hk、us、tw 等) 。我們可以繼續(xù)使用 dig 查看一下 頂級(jí)域名的解析路徑,加上 +trace 參數(shù)選項(xiàng),意思是追蹤 DNS 解析過(guò)程,如下:

可以看到是先到根節(jié)點(diǎn),再查找到 com ,就是根結(jié)點(diǎn)會(huì)告知下一個(gè)結(jié)點(diǎn) com 在哪:就是 com. 172800 IN NS [a-m].gtld-servers.net 。

推薦閱讀