您的位置: 首頁 > 技術文檔 > 網站建設 > DNS優化的原理和方法
社交網站中關系的利用 回到列表 搜索引擎中的粒度問題
 DNS優化的原理和方法

作者:mark.chenfl 時間: 2011-12-08 文檔類型:合作網站提供 來自:Alibaba.com UED

Yahoo和Google都有自己的建設高性能網站最佳實踐, 我不做贅述, 需要了解的自行查閱資料:

上面的最佳實踐條例其實也就是我們常在YSlowPageSpeed這兩個Firefox的add-ons中看到的網站檢測結果的參考標準.

而整個WPO其實是對瀏覽器(browser)的加載(load)和解析(parse)過程中的一些消耗行為進行優化, 而load和parse在整個瀏覽器工作過程中又互相糾結互相作用.

在這篇文字中討論的更多是FE們能夠伸手處理或者通過達成共識的方法來進行快速推動Tech們協助的一些事情.

OK, 我們慢慢把瀏覽器的工作過程掰細了看吧.

首先, 我們先整一個瀏覽器如何找到一個網站的簡易工作原理 – DNS查詢:

首先當用戶在瀏覽器的地址欄中敲入了網站的網址 ( 比如: alibaba.com ) ,這時瀏覽器會首先通過訪問的域名來定位到IP (DNS) 從而找到去哪里獲取資源, 這時, 瀏覽器會依次進行如下查找:

1. 瀏覽器緩存 :

瀏覽器首先會在自己的緩存中查找有沒有對應的域名 – IP匹配, 如果好運的話, 這里就可以直接嘗試去訪問資源了, 如果運氣平平則往下走吧.

2. 系統緩存 :

瀏覽器緩存中沒有命中, 瀏覽器會告訴操作系統:”嘿, 我在我自己口袋里沒找到, 可能丟了, 我得去你那看看”, 然后, 一個系統進程(?)調取系統中的DNS緩存進行查詢, 重復上一條的運氣判斷…

3. 路由器緩存 :

走到這, 運氣還真不太好啊, 操作系統也沒轍了, 那怎么辦呢, 向路由去要要看吧… 重復運氣判斷…

4. ISP DNS緩存 :

好吧, 真不知道說運氣好還是運氣不好了, 不廢話, 去ISP (網絡提供商) 的DNS緩存服務器中尋找了, 一般情況下, 在ISP端的緩存中都能找到相應的緩存記錄了, 不該這么背了, 或者… 您的ISP有夠菜…

5. 遞歸搜索

最無奈的情況發生了, 在前面都沒有辦法命中的DNS緩存的情況下, ISP的DNS服務器開始從root域名服務器開始進行遞歸, 順序是從.com頂級域名服務器到alibaba的域名服務器, 再沒找到…好吧, 您認為您要去的網站真的公開存在么…?

要強調的是, 不只是對網站第一次的域名訪問需要做這樣一次查詢工作, 在對頁面中的資源引用的域名解析時一樣會有這樣的一系列工作. 最明顯的就是啟用全新域名來做靜態資源存儲服務時, 基本上上述的1 – 5個步驟都得走上幾遍. 才能讓新域名在各DNS緩存服務器上留下記錄.

在這個話題上, 關于DNS的類似系統級的解決方案不是FE能夠控制得了的, 我們q可以在涉及到DNS時有些小Tips來從中做些事情.

好吧, 第一項.DNS相關的優化:

常規實踐 : DNS解析的復雜性決定了不當的使用多域名獲取資源會造成不必要的性能開銷. 在WPO中, 很多優化工作是很藝術的, 在DNS和HTTP這兩方面優化是就可以看到這個神奇的藝術性:

DNS的優化, 當然是盡可能少的造成DNS查詢開銷, 而在HTTP優化的策略中有一項優化措施是避免單域名下連接數的缺陷來進行資源多通道下載, 實施的細節會在 <HTTP優化的原理和方法> 中詳細介紹, 在這里只是簡單的提一下, 靜態資源多域名服務可以繞過瀏覽器單域名載入資源時并行連接數的限制, DNS優化需要我們盡可能少的域名解析, HTTP優化時需要我們適當的使用多域名服務, 那怎么樣讓兩個優化實踐都能夠比較好的實施呢? [todo]

優雅降級 : 在某些現代瀏覽器 ( Google Chrome, Firefox 3.5+ ) 中, 已經能夠支持DNS的預取了, 怎么個預取呢? 就是在瀏覽器加載網頁時, 對網頁中的<link>或者<a>的href屬性中的域名進行后臺的預解析(上文中的 1- 5步), 并且將解析結果緩存在瀏覽器端, 當用戶在真正點擊鏈接時, 省去在當下的DNS解析消耗, 把這個消耗過程轉嫁到用戶無法感知的瀏覽過程中去.

第一, 現代瀏覽器已經支持且默認打開了DNS Prefetch的功能. 當然也可以通過瀏覽器的配置來管理該功能:

用Firefox3.5+可以這樣: 瀏覽器默認就打開了HTTP協議下的DNS預取功能, 默認關閉HTTPS協議下的DNS預取功能, 可通過 about:config 的 network.dns.disablePrefetchnetwork.dns.disablePrefetchFromHTTPS <兩個選項來控制兩種協議下的預取功能.

Chrome管理DNS Prefetch方法暫時缺少.

第二, 可以通過用meta信息來告知瀏覽器, 我這頁面要做DNS預取:

<meta http-equiv="x-dns-prefetch-control" content="on" />

第三,可以使用link標簽來強制對DNS做預取:

<link rel="dns-prefetch" href="http://www.alibaba.com/" />

[todo DEMO]

擴展閱讀:

另, 小康(lazyKang)同學發現一個神奇的現象:

在一次無緩存訪問中,  在一個并行下載通道內, 就算是同域名的情況, 也會造成DNS并行解析的消耗…

DNS預解析一次, 應該就能避免這樣的問題, 空了做個DEMO試試看.

本文鏈接:http://www.ditdrb.tw/tech/site/2011/8697.asp 

出處:Alibaba.com UED
責任編輯:bluehearts

◎進入論壇網站綜合網頁制作版塊參加討論

作者文章
COMMENT IN HTML
HTML5設計原則
熱門搜索:CSS Fireworks 設計比賽 網頁制作 web標準 用戶體驗 UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點最新 站點最新列表
周大福“敬•自然”設計大賽開啟
國際體驗設計大會7月將在京舉行
中國國防科技信息中心標志征集
云計算如何讓安全問題可控
云計算是多數企業唯一擁抱互聯網的機會
阿里行云
云手機年終巨獻,送禮標配299起
阿里巴巴CTO王堅的"云和互聯網觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機主題設計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標
數據同步算法研究
用ps作簡單的作品展示頁面
CSS定位機制之一:普通流
25個最佳最閃亮的Eclipse開發項目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創建自定義SQL Rule
分享按鈕

藍色理想版權申明:除部分特別聲明不要轉載,或者授權我站獨家播發的文章外,大家可以自由轉載我站點的原創文章,但原作者和來自我站的鏈接必須保留(非我站原創的,按照原來自一節,自行鏈接)。文章版權歸我站和作者共有。

轉載要求:轉載之圖片、文件,鏈接請不要盜鏈到本站,且不準打上各自站點的水印,亦不能抹去我站點水印。

特別注意:本站所提供的攝影照片,插畫,設計作品,如需使用,請與原作者聯系,版權歸原作者所有,文章若有侵犯作者版權,請與我們聯系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內容無關的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網上道德,遵守中華人民共和國的各項有關法律法規
·承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
·本站評論管理人員有權保留或刪除其管轄評論中的任意內容
·您在本站發表的作品,本站有權在網站內轉載或引用
·參與本評論即表明您已經閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業書推薦 更多內容
網站可用性測試及優化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網站UI 設計之道
《Flex 4.0 RIA開發寶典》
《贏在設計》
犀利開發—jQuery內核詳解與實踐
作品集 更多內容

雜⑦雜⑧ Gold NORMANA V2
公式规律一波中特