優(yōu)化DNS解析 提高網(wǎng)頁(yè)打開速度
2024-09-07 13:38:46
供稿:網(wǎng)友
用戶打開網(wǎng)站的整個(gè)流程中,DNS解析時(shí)第一環(huán),當(dāng)用戶輸入域名并敲回車后,windows系統(tǒng)調(diào)用DNS client,尋找到用戶配置或者自動(dòng)分配的DNS IP,之后就開始整個(gè)解析過程,DNS服務(wù)器忙和了一段時(shí)間,完成解析到此域名的數(shù)字IP服務(wù)器,一般情況下返回給定域名對(duì)應(yīng)的IP地址會(huì)花費(fèi)20到120毫秒的時(shí)間,而且在這個(gè)過程中瀏覽器什么都不會(huì)做直到DNS查找完畢。
一旦解析完成,連接建立并保持,也就是順利的訪問以后,網(wǎng)頁(yè)以后的下載速度就和DNS沒關(guān)系了,直到下一次重新解析和發(fā)起訪問請(qǐng)求……
DNS解析,變快,有意義嗎?
通過上面DNS的運(yùn)行方式,你一定有了答案,當(dāng)然有意義了。
呵呵,很多小型網(wǎng)站,DNS解析時(shí)間都接近0.5s,甚至我見過一個(gè)網(wǎng)站,需要1.2s才可以解析出結(jié)果的。這是個(gè)非常令人吃驚的數(shù)據(jù),因?yàn)閷?duì)于一般網(wǎng)站用戶的等待時(shí)間超過8s就會(huì)放棄訪問,而對(duì)于電子商務(wù)網(wǎng)站,4s就是用戶忍耐極限。而一般經(jīng)過優(yōu)化的小型網(wǎng)站,DNS解析時(shí)間都可以控制在200MS左右,而帶寬在100M左右的網(wǎng)站,經(jīng)過優(yōu)化,DNS解析時(shí)間可以控制在50-100ms。
如何優(yōu)化呢?
首先利用好TTL,因?yàn)橐M量多的讓用戶直接從運(yùn)營(yíng)商的DNS緩存中拿到A記錄,這樣才能保證最快,但是也要保證,當(dāng)你的服務(wù)器出問題時(shí),需要盡快的切換,所以,這個(gè)TTL設(shè)置也是有一些情況需要綜合研究的。
1、 你肯定清楚,自己的服務(wù)器有沒有多臺(tái)或者備份。如無備份,那服務(wù)器宕機(jī)時(shí),你只能生抗,所以,TTL時(shí)間對(duì)于你來說是越長(zhǎng)越好,因?yàn)門TL短的目的是服務(wù)器發(fā)生問題時(shí),可以及時(shí)切換,這個(gè)對(duì)于沒有備份的網(wǎng)站基本利用不上。所以,你的TTL設(shè)置就是越長(zhǎng)越好,當(dāng)然了,也不能無限長(zhǎng),一般設(shè)置TTL 3600即可。
2、 如有備份或者多臺(tái)服務(wù)器,會(huì)發(fā)生由于服務(wù)器宕機(jī)需要及時(shí)做切換,TTL時(shí)間越短,切換越及時(shí),但是TTL時(shí)間越短,也就意味著運(yùn)營(yíng)商DNS經(jīng)常緩存不住,一般用戶,設(shè)置為TTL 600即可,如果對(duì)及時(shí)切換,要求特別苛刻的網(wǎng)站,設(shè)置TTL 120即可。
其次尋找足夠熱的域名解析商。很多網(wǎng)站,都是自己做一個(gè)域名解析服務(wù)器,看著自己掌控方便了,但是大錯(cuò)特錯(cuò),因?yàn)槟愕挠蛎馕龇?wù)器,基本上都不被緩存,每次從根服務(wù)器詢問一圈,繞了大半個(gè)地球,才給出最后的結(jié)果,那自然會(huì)效果很差。所以,要尋找足夠熱的域名解析商。什么叫熱,就是被訪問的次數(shù)特別多。足夠熱的話,域名解析服務(wù)器的A記錄基本上會(huì)被各地運(yùn)營(yíng)商的DNS一直緩存著。如何判斷域名解析商夠不夠熱呢?其實(shí),也很簡(jiǎn)單,看看這個(gè)域名解析商的客戶夠不夠多,他們客戶網(wǎng)站夠不夠熱門,訪問的人夠不夠多。
也給大家推薦一個(gè)更好的方法,就是找CDN廠商做域名解析。因?yàn)镃DN廠商服務(wù)的客戶,有很多是很熱很大用戶群很多的,所以,這些CDN廠商的域名解析服務(wù)器,服務(wù)效果那是崗崗的好。
最后是進(jìn)階技巧---巧用CNAME。不少網(wǎng)站擁有者,在同樣的一個(gè)或多個(gè)服務(wù)器上運(yùn)營(yíng)很多小網(wǎng)站;或者自己運(yùn)營(yíng)一個(gè)網(wǎng)站,但是拆分了很多個(gè)二級(jí)域名。針對(duì)這些情況,嚴(yán)重需要善用CNAME,把所有的這些小網(wǎng)站的域名或者二級(jí)域名,cname到一個(gè)自己定義的統(tǒng)一域名。然后設(shè)置這個(gè)cname對(duì)應(yīng)的TTL時(shí)間足夠長(zhǎng)。這樣的話,保證網(wǎng)站的第一次解析,可以直接從運(yùn)營(yíng)商的DNS緩存中拿到,也就是直接拿到cname后的記錄。然后,第二個(gè)cname記錄,再設(shè)置一個(gè)相對(duì)合理的TTL值。通過這樣,變相加熱了第二級(jí)域名,通過加熱的第二級(jí)和緩存時(shí)間足夠長(zhǎng)的第一級(jí),最大化的優(yōu)化DNS解析時(shí)間。該技巧,一定要確保,最后A記錄得到的IP,可以服務(wù)這些原始域名。
例子:
www.abc.com. 7200 IN CNAME hot.abc.com.
hot.abc.com. 600 IN A 127.0.0.1
什么叫拆分域名?
很多網(wǎng)站,在搭建網(wǎng)站的時(shí)候,只是申請(qǐng)和購(gòu)買了一個(gè)域名,然后所有內(nèi)容:圖片、js、css、html、php等等,都放在一個(gè)域名下。
而拆分域名,指的就是根據(jù)不同的應(yīng)用,而將域名拆分出來。
拆分域名有什么好處?
HTTP1.1下,針對(duì)同個(gè)域名,IE6和IE7內(nèi)核的瀏覽器,只會(huì)同時(shí)發(fā)起2個(gè)連接。IE8內(nèi)核的瀏覽器,可同時(shí)發(fā)起6個(gè)連接。
很重要嗎?
非常重要,請(qǐng)看圖示。
使用IE6打開一個(gè)所有內(nèi)容均在同個(gè)域名下的網(wǎng)站
優(yōu)化DNS解析和拆分域名 提高網(wǎng)頁(yè)打開速度 - 小腳丫 - 幸福的走向我們的2011
使用IE8打開一個(gè)所有內(nèi)容均在同個(gè)域名下的網(wǎng)站
優(yōu)化DNS解析和拆分域名 提高網(wǎng)頁(yè)打開速度 - 小腳丫 - 幸福的走向我們的2011
我們看到的是,在IE6的情況下,請(qǐng)求第7個(gè)元素,需要0.7s,而在IE8的情況下,0.277就開始請(qǐng)求第7個(gè)元素。由此可以看到,并發(fā)連接更多的時(shí)候,網(wǎng)頁(yè)打開速度會(huì)更快。
由以上數(shù)據(jù)可以看到,多個(gè)域名,不管是在IE6和IE8的情況下,拆分域名,都會(huì)使網(wǎng)站的打開速度變快。
優(yōu)化DNS解析和拆分域名 提高網(wǎng)頁(yè)打開速度 - 小腳丫 - 幸福的走向我們的2011
現(xiàn)實(shí)中也是如此,各大型網(wǎng)站,他們無一不是在拆分域名。
另外,要糾正一個(gè)IT人的誤區(qū)。因?yàn)镮T人一般都熱衷技術(shù),很多人的操作系統(tǒng)等版本都很新,用的都是IE8甚至以上的瀏覽器。但是整個(gè)中國(guó),到目前為止,使用IE6和IE7的用戶,仍然非常另IT人震驚的80%左右。所以,拆分域名,基本上可以縮減你20%以上的打開速度。
按照什么原則拆分域名呢?
個(gè)數(shù)多少合適?
一般50M以下網(wǎng)頁(yè)類網(wǎng)站,域名保持在4、5個(gè)即可,過多后范圍會(huì)導(dǎo)致你的維護(hù)和使用變得復(fù)雜。
100-500M以下網(wǎng)頁(yè)類網(wǎng)站,域名保持在8-10個(gè)左右。
1G以上的網(wǎng)頁(yè)類網(wǎng)站,域名無所謂個(gè)數(shù),保持10個(gè)以上,具體個(gè)數(shù)根據(jù)自己的業(yè)務(wù)和管理特點(diǎn)隨心制定。
什么內(nèi)容放到同個(gè)域名下?
頁(yè)面類:html、htm等
樣式類:js、css等
圖片類:jpg、png、gif等
動(dòng)態(tài)類:php、asp等
這樣的分配方式,將來有利于你進(jìn)一步優(yōu)化你的網(wǎng)站,并且在你需要尋找加速工具時(shí),也可以針對(duì)性的選擇不同的加速方式。
如何應(yīng)用到頁(yè)面上?
緩存DNS查找可以改善頁(yè)面性能。這種緩存需要一個(gè)特定的緩存服務(wù)器,這種服務(wù)器一般屬于用戶的ISP提供商或者本地局域網(wǎng)控制,但是它同樣會(huì)在用戶使用 的計(jì)算機(jī)上產(chǎn)生緩存。DNS信息會(huì)保留在操作系統(tǒng)的DNS緩存中(微軟Windows系統(tǒng)中DNS Client Service)。大多數(shù)瀏覽器有獨(dú)立于操作系統(tǒng)以外的自己的緩存。由于瀏覽器有自己的緩存記錄,因此在一次請(qǐng)求中它不會(huì)受到操作系統(tǒng)的影響。Internet Explorer默認(rèn)情況下對(duì)DNS查找記錄的緩存時(shí)間為30分鐘,它在注冊(cè)表中的鍵值為DnsCacheTimeout。Firefox對(duì)DNS的查找 記錄緩存時(shí)間為1分鐘,它在配置文件中的選項(xiàng)為network.dnsCacheExpiration(Fasterfox把這個(gè)選項(xiàng)改為了1小時(shí))。
當(dāng)客戶端中的DNS緩存都為空時(shí)(瀏覽器和操作系統(tǒng)都為空),DNS查找的次數(shù)和頁(yè)面中主機(jī)名(也可說成域名)的數(shù)量相同。這其中包括頁(yè)面中URL、圖 片、腳本文件、樣式 表、Flash對(duì)象等包含的主機(jī)名。減少主機(jī)名的數(shù)量可以減少DNS查找次數(shù)。減少主機(jī)名的數(shù)量還可以減少頁(yè)面中并行下載的數(shù)量。減少DNS查找次數(shù)可以 節(jié)省響應(yīng)時(shí)間,但是減少并行下載卻會(huì)增加響應(yīng)時(shí)間。我的指導(dǎo)原則是把這些頁(yè)面中的內(nèi)容分割成至少兩部分但不超過四部分。這種結(jié)果就是在減少DNS查找次數(shù) 和保持較高程度并行下載兩者之間的權(quán)衡了。
因?yàn)镮E6、7的同一域名下的并行數(shù)量為2個(gè),那么,為了節(jié)省DNS查找并保持較高的并行,由于按頁(yè)面大小分割成了兩個(gè)至四個(gè)部分,在同一個(gè)部分里,我們一般把同域名的2個(gè)(同域名加載數(shù)的限制)加載項(xiàng)寫在一起,再寫另外其它域名的加載項(xiàng)。根據(jù)一般的網(wǎng)站而言,一般情況下,在一同一個(gè)部分里,不同域名出現(xiàn)的次數(shù)一般在4個(gè)就夠用了(也就是可同時(shí)至少加載8張圖片),如果需加載內(nèi)容不多,盡量控制在2個(gè)。