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