域名注冊(cè) 網(wǎng)站制作
您現(xiàn)在的位置:首頁(yè) >> 網(wǎng)站建設(shè) >> 內(nèi)容

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升新層次

時(shí)間:2015/1/18 11:25:31 點(diǎn)擊:281

摘要:提高網(wǎng)頁(yè)的打開(kāi)速度,一般地我們會(huì)選擇使用CDN,利用“就近原則”讓用戶在最短的時(shí)間內(nèi)獲取到服務(wù)器資源,實(shí)際應(yīng)用當(dāng)中采用CDN的方式提高網(wǎng)站訪問(wèn)速度的效果也是最明顯的。這也就是為什么國(guó)外的空間打開(kāi)速度...

提高網(wǎng)頁(yè)的打開(kāi)速度,一般地我們會(huì)選擇使用CDN,利用“就近原則”讓用戶在最短的時(shí)間內(nèi)獲取到服務(wù)器資源,實(shí)際應(yīng)用當(dāng)中采用CDN的方式提高網(wǎng)站訪問(wèn)速度的效果也是最明顯的。這也就是為什么國(guó)外的空間打開(kāi)速度遠(yuǎn)不及國(guó)內(nèi)的主機(jī)的訪問(wèn)速度的原因了。

我們知道在用戶訪問(wèn)網(wǎng)站時(shí)先得經(jīng)過(guò)域名DNS解析這一過(guò)程,可能很多人對(duì)于DNS解析時(shí)間平常并沒(méi)有太在意。性能穩(wěn)定、響應(yīng)時(shí)間快的DNS域名解析服務(wù)與不穩(wěn)定、響應(yīng)過(guò)慢的DNS的域名解析時(shí)間可能相差1秒,而對(duì)于網(wǎng)站存在過(guò)多的域名解析請(qǐng)求,這個(gè)時(shí)間積累起來(lái)就非常地多了。

本篇文章就來(lái)分享一下通過(guò)優(yōu)化網(wǎng)站DNS域名解析,減少域名DNS解析時(shí)間,從而讓網(wǎng)站在原來(lái)的訪問(wèn)速度的前提下繼續(xù)實(shí)現(xiàn)新的飛躍。

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升到新層次-DNS緩存/預(yù)加載/多域名

一、域名DNS解析原理和過(guò)程

1、DNS是怎么來(lái)的?DNS 是域名系統(tǒng) (Domain Name System) 的縮寫(xiě)。在Internet上域名與IP地址之間是一對(duì)一(或者多對(duì)一)的,域名雖然便于人們記憶,但機(jī)器之間只能互相認(rèn)識(shí)IP地址,它們之間的轉(zhuǎn)換工作稱為域名解析,域名解析需要由專門的域名解析服務(wù)器來(lái)完成,DNS就是進(jìn)行域名解析的服務(wù)器。

2、DNS解析的基本過(guò)程一:查找本地域名DNS緩存。當(dāng)用戶通過(guò)瀏覽器訪問(wèn)某域名時(shí),瀏覽器首先會(huì)在自己的緩存中查找是否有該域名對(duì)應(yīng)的IP地址,例如計(jì)算機(jī)系統(tǒng)Hosts文件域名對(duì)應(yīng)IP、路由器緩存、ISP(互聯(lián)網(wǎng)服務(wù)提供商)DNS緩存。

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升新層次

3、DNS解析的基本過(guò)程二:通過(guò)上面的DNS查詢依然沒(méi)有找到想你的域名對(duì)應(yīng)的IP地址,那么就要進(jìn)入根服務(wù)器進(jìn)行查詢。全球共有13臺(tái)根邏輯域名服務(wù)器。這13臺(tái)邏輯根域名服務(wù)器中名字分別為“A”至“M”,真實(shí)的根服務(wù)器在2014年1月25日的數(shù)據(jù)為386臺(tái),分布于全球各大洲。

4、在根域名服務(wù)器中雖然沒(méi)有每個(gè)域名的具體信息,但儲(chǔ)存了負(fù)責(zé)每個(gè)域(如COM、NET、ORG等)的解析的域名服務(wù)器的地址信息。根域名服務(wù)器會(huì)將其管轄范圍內(nèi)頂級(jí)域名(如.com)服務(wù)器IP告訴本地DNS服務(wù)器,這樣你的域名查詢請(qǐng)求會(huì)進(jìn)入到相應(yīng)的頂級(jí)域名服務(wù)器。

5、DNS解析的基本過(guò)程三:頂級(jí)域名服務(wù)器收到請(qǐng)求后查看區(qū)域文件記錄,若無(wú)則將其管轄范圍內(nèi)主域名(不帶任何前綴的域名,如freehao123.com)服務(wù)器的IP地址告訴本地DNS服務(wù)器。如果還是沒(méi)有找到,則進(jìn)入到下一級(jí)域名服務(wù)器進(jìn)行查找。如此重復(fù),直到找到正確的結(jié)果為止。

6、查找到正確的域名對(duì)應(yīng)IP地址后,本地域名服務(wù)器把返回的結(jié)果保存到緩存,以備下一次使用,同時(shí)將該結(jié)果反饋給客戶端,客戶端通過(guò)這個(gè)IP地址與web服務(wù)器建立鏈接。于是你的瀏覽器就正常訪問(wèn)網(wǎng)站了。下圖是對(duì)Google.com為例,解釋用戶在訪問(wèn)谷歌時(shí)DNS解析的全過(guò)程。(點(diǎn)擊放大)

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升新層次

二、瀏覽器加載網(wǎng)頁(yè)的基本過(guò)程

1、從瀏覽器地址欄的請(qǐng)求鏈接開(kāi)始,瀏覽器通過(guò)DNS解析查到域名映射的IP地址,成功之后瀏覽器端向此IP地址取得連接,成功連接之后,瀏覽器端將請(qǐng)求頭信息通過(guò)HTTP協(xié)議向此IP地址所在服務(wù)器發(fā)起請(qǐng)求,服務(wù)器接受到請(qǐng)求之后等待處理。

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升新層次

2、覽器加載顯示HTML的順序是:從上到下,渲染的順序也是從上到下,下載和渲染是同時(shí)進(jìn)行的。如果遇到語(yǔ)義解釋性的標(biāo)簽嵌入文件(JS腳本,CSS 下載過(guò)程會(huì)啟用單獨(dú)連接進(jìn)行下載,并且在下載后進(jìn)行解析,解析過(guò)程中,停止頁(yè)面所有往下元素的下載。(點(diǎn)擊放大)

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升新層次

3、什么原因會(huì)導(dǎo)致網(wǎng)頁(yè)加載過(guò)慢?瀏覽器可以在下載CSS資源的同時(shí),并行解析HTML文件,但是,一旦發(fā)現(xiàn)有腳本文件的引用,則必須等待腳本文件完成下載并且執(zhí)行后才能繼續(xù)解析。內(nèi)容下載時(shí)間主要取決于用戶帶寬、服務(wù)器帶寬、文件大小、文件數(shù)量等。

三、合理利用DNS TTL值 增加域名的緩存命中率

1、DNS 服務(wù)器采用遞歸或迭代來(lái)處理客戶端查詢時(shí),它們將發(fā)現(xiàn)并獲得大量有關(guān) DNS 命名空間的重要信息。然后這些信息由服務(wù)器緩存。緩存為 DNS 解析流行名稱的后續(xù)查詢提供了加速性能的方法,同時(shí)大大減少了網(wǎng)絡(luò)上與 DNS 相關(guān)的查詢通信量。

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升新層次

2、TTL(Time-To-Live)即一條域名解析記錄在DNS服務(wù)器上緩存時(shí)間。當(dāng)信息緩存時(shí),生存時(shí)間 (TTL) 值適用于所有緩存的 RR。只要緩存 RR 的 TTL 沒(méi)有到期,DNS 服務(wù)器就可繼續(xù)緩存并再次使用 RR 來(lái)應(yīng)答與這些 RR 相匹配的客戶端提出的查詢。

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升新層次

3、適當(dāng)?shù)卦龃骉TL值可以讓DNS Server緩存該域名更長(zhǎng)時(shí)間,增加緩存的命中率。TTL一般默認(rèn)為一小時(shí),可以根據(jù)實(shí)際情況設(shè)為一天甚至一周以上。當(dāng)然,如果你域名的IP經(jīng)常變化,則TTL不應(yīng)過(guò)大,否則各地的DNS Server會(huì)暫時(shí)無(wú)法獲得新的正確的IP地址。

四、合理使用DNS-prefetch讓DNS預(yù)讀取

1、從上面瀏覽器加載網(wǎng)頁(yè)的過(guò)程可以看出,網(wǎng)頁(yè)的請(qǐng)求是可以多任務(wù)同時(shí)進(jìn)行的,對(duì)于網(wǎng)頁(yè)有多個(gè)DNS請(qǐng)求的情況,可以讓瀏覽器在后臺(tái)先把要使用的DNS請(qǐng)求默默地完成,這樣當(dāng)用戶在打開(kāi)新的網(wǎng)頁(yè)時(shí),就可以節(jié)省DNS查詢的時(shí)間了。

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升新層次

2、控制瀏覽器的DNS預(yù)讀取就是DNS-prefetch標(biāo)簽了,DNS Prefetch應(yīng)該盡量的放在網(wǎng)頁(yè)的前面,格式類似是:

很多網(wǎng)站都使用使用百度廣告聯(lián)盟代碼,使用這個(gè)就可以預(yù)讀取DNS了。

3、默認(rèn)情況下瀏覽器會(huì)有隱式的DNS Prefetch,即會(huì)對(duì)頁(yè)面中和當(dāng)前域名(正在瀏覽網(wǎng)頁(yè)的域名)不在同一個(gè)域的域名進(jìn)行預(yù)獲取,并且緩存結(jié)果,我們可以通過(guò)下面的標(biāo)簽禁止隱式的DNS Prefetch:

4、需要注意的就是,DNS Prefetch只需要在用戶在第一次打開(kāi)網(wǎng)站時(shí)使用即可,沒(méi)有必要每個(gè)頁(yè)面都使用DNS Prefetch,否則就是重復(fù)DNS讀取了,反而還無(wú)形中增加了DNS查詢的次數(shù),效果適得其反。

五、DNS域名解析拆分為多個(gè)域名增加并行下載量

1、一般來(lái)說(shuō)網(wǎng)頁(yè)的內(nèi)容加載時(shí)會(huì)發(fā)生多個(gè)域名請(qǐng)求服務(wù),如果你的網(wǎng)站JS、CSS、圖片等非常多的話,建議將這些文件分別放在不同的域名上,這樣瀏覽器在打開(kāi)某一個(gè)頁(yè)面時(shí)就可以同時(shí)向這些域名發(fā)送DNS解析請(qǐng)求了,能在一定程度上減少DNS時(shí)間。(點(diǎn)擊放大)

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升新層次

2、網(wǎng)頁(yè)的內(nèi)容越多,分析的域名應(yīng)該盡量多一些。例如html、htm,js、css,jpg、png、gif,php、asp都可以放在不同的域名上。在實(shí)際應(yīng)用上,使用全站CDN或者是靜態(tài)文件CDN就可以實(shí)現(xiàn)上述效果,并且結(jié)合css sprite一起來(lái)使用的。

減少域名DNS解析時(shí)間將網(wǎng)頁(yè)加載速度提升新層次

3、css sprite的作用恰恰相反,它不是增加域名請(qǐng)求,而減少域名DNS請(qǐng)求,主要是用在圖片上。它允許你將一個(gè)頁(yè)面涉及到的所有零星圖片都包含到一張大圖中去,這樣一來(lái),當(dāng)訪問(wèn)該頁(yè)面時(shí),載入的圖片就不會(huì)像以前那樣一幅一幅地慢慢顯示出來(lái)了。

六、加快域名DNS解析速度方法小結(jié)

1、本文介紹的用DNS緩存、DNS預(yù)讀取、拆分域名來(lái)減少域名DNS解析的時(shí)間的方法,對(duì)于一般的網(wǎng)站的加速效果可能并不明顯,但是對(duì)于一些每天DNS請(qǐng)求達(dá)到上百萬(wàn)級(jí)以上的網(wǎng)站,DNS加速的效果就顯而易見(jiàn)了。另外,如果發(fā)現(xiàn)自己的網(wǎng)站響應(yīng)速度過(guò)慢,不妨好好檢查一下網(wǎng)頁(yè)的DNS用時(shí)。

2、除了從網(wǎng)站本身的DNS解析來(lái)加快訪問(wèn)速度外,我們平常在選擇DNS服務(wù)時(shí)盡量使用那些穩(wěn)定可靠的DNS服務(wù),這樣的DNS服務(wù)響應(yīng)速度和緩存率都是非常不錯(cuò)的。假如自己的網(wǎng)站分拆了多個(gè)二級(jí)域名,不妨好好用用CNAME,設(shè)置好TTL時(shí)間,保證網(wǎng)站的第一次解析,可以直接從運(yùn)營(yíng)商的DNS緩存中拿到。

--免費(fèi)資源部落

轉(zhuǎn)載請(qǐng)保留原文地址: http://frontstepsmusic.com/show-396.html

責(zé)編:王麗 作者:不詳 來(lái)源:網(wǎng)絡(luò)