至此可見(jiàn),減少就是提高性能和擴展性的代名詞。雖然許多原則針對的是軟件即服務(wù)(SaS)的架構,但這個(gè)原則考慮的則是客戶(hù)的瀏覽器。如果采用瀏覽器端的調試工具,如Mozilla Firefox I的插件Firebug9,那么在載入應用中的一個(gè)頁(yè)面時(shí),你就會(huì )發(fā)現有趣的結果。最惹人注意的結果之是頁(yè)面中大小相近的對象下載的時(shí)長(cháng)卻不一樣。進(jìn)一步觀(guān)察,你會(huì )發(fā)現在開(kāi)始下載對象之前,都有一個(gè)額外的步驟:DNS查找。

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