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