至此可見,減少就是提高性能和擴(kuò)展性的代名詞。雖然許多原則針對(duì)的是軟件即服務(wù)(SaS)的架構(gòu),但這個(gè)原則考慮的則是客戶的瀏覽器。如果采用瀏覽器端的調(diào)試工具,如Mozilla Firefox I的插件Firebug9,那么在載入應(yīng)用中的一個(gè)頁(yè)面時(shí),你就會(huì)發(fā)現(xiàn)有趣的結(jié)果。最惹人注意的結(jié)果之是頁(yè)面中大小相近的對(duì)象下載的時(shí)長(zhǎng)卻不一樣。進(jìn)一步觀察,你會(huì)發(fā)現(xiàn)在開始下載對(duì)象之前,都有一個(gè)額外的步驟:DNS查找。
域名服務(wù)器(DNS)是因特網(wǎng)或其他采用 TCP/IP協(xié)議的網(wǎng)絡(luò)最重要的基礎(chǔ)設(shè)施之一。它可以把域名(如www.akfpartners.com)翻譯成IP地址(如184.72.236.173),因此常常被比作電話簿。DNS是通過(guò)一個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng)維護(hù)的,該數(shù)據(jù)庫(kù)系統(tǒng)的節(jié)點(diǎn)是域名服務(wù)器。這種分層體系的最頂層是根域名服務(wù)器。每個(gè)域至少有一個(gè)權(quán)威的DNS服務(wù)器,用于發(fā)布關(guān)于該域的信息。
采用多層級(jí)緩存的方法可以加速把域名翻譯為IP地址,緩存可在瀏覽器、操作系統(tǒng)、因特網(wǎng)服務(wù)提供商等各級(jí)進(jìn)行。不過(guò),在現(xiàn)實(shí)世界中頁(yè)面上都有成百上千的對(duì)象,許多對(duì)象來(lái)自于不同的域,下載每個(gè)對(duì)象的時(shí)間雖然微不足道,但是累加起來(lái)形成的時(shí)間差就會(huì)引起客戶注意了我們深入討論如何減少DNS查詢之前,首先應(yīng)該對(duì)大多數(shù)瀏覽器如何下載頁(yè)面有更多的了解。
這并不是說(shuō)要深入研究瀏覽器,但是理解基礎(chǔ)原理有助于你優(yōu)化應(yīng)用的性能和擴(kuò)展性。幾乎所有的Web頁(yè)面都是由許多不同的對(duì)象(圖像、Javascript腳本、CSS腳本等)構(gòu)成的,瀏覽器利用了這一點(diǎn),可以同時(shí)連接下載多個(gè)對(duì)象。瀏覽器限制了對(duì)每個(gè)服務(wù)器或代理的最大同時(shí)持續(xù)連接數(shù)。根據(jù)HTTP/1.1RFC規(guī)定,這個(gè)最大連接數(shù)應(yīng)該設(shè)置為2。但是許多瀏覽器都會(huì)忽略這個(gè)RFC,把最大連接數(shù)設(shè)置為6或者更大。在下一個(gè)原則中,我們將介紹如何利用這個(gè)功能優(yōu)化頁(yè)面的下載時(shí)間?,F(xiàn)在,讓我們把重點(diǎn)放在可以分成多個(gè)對(duì)象,并通過(guò)多個(gè)連接下載它們的Web頁(yè)面。
Web頁(yè)面上的一個(gè)或多個(gè)對(duì)象可能屬于不同的域,每個(gè)域都需要在緩存或DNS域名服務(wù)器中進(jìn)行DNS查找。
例如,假設(shè)一個(gè)簡(jiǎn)單的Web頁(yè)面具有以下4個(gè)對(duì)象:
1)包含文本和其他對(duì)象相關(guān)指令的HTML頁(yè)面本身;
2)設(shè)置布局的CSS文件;
3)設(shè)置菜單項(xiàng)的Javascript文件;
4)JPG圖像。
HTML文件來(lái)自于我們的域(akfpartners.com),但CSS文件和JPG文件來(lái)自于子域(static.akfpartners.com)Javascrip文件則是鏈接到Google(ajax.googleapis.com)的。在這個(gè)例子中,測(cè)覽器首先政御訪www.akfnartners.com頁(yè)面的請(qǐng)求,這就需要對(duì)域akfnartners.com進(jìn)行DNS查找。當(dāng)把HTML文件下載到瀏覽器中后,瀏覽器解析發(fā)現(xiàn)需要從static.akfpartners.com下載CSS和JPG文件,這就需要另一次DNS查找。最最后,通過(guò)解析發(fā)現(xiàn)還需要從另外一個(gè)域下載一個(gè)外部的Javascript文件。依靠瀏覽器、操作系統(tǒng)等對(duì)DNS緩存的刷新,這些查找花費(fèi)的時(shí)間最多只有幾百毫秒。
一個(gè)通用的網(wǎng)站建設(shè)原則是,頁(yè)面上的DNS查找越少下載頁(yè)面的性能越高。但是,把所有對(duì)象都放在一個(gè)域中也有不利的一面,我們?cè)谇懊骊P(guān)于最大同時(shí)連接數(shù)的討論中就暗示過(guò)這一點(diǎn)。
本文地址:http://m.blackside-inc.com//article/3450.html