提高網頁的開啟速度,一般地我們會選擇使用cdn,利用「就近原則」讓使用者在最短的時間內獲取到伺服器資源,實際應用當中採用cdn的方式提高**訪問速度的效果也是最明顯的。這也就是為什麼國外的空間開啟速度遠不及國內的主機的訪問速度的原因了。
我們知道在使用者訪問**時先得經過網域名稱dns解析這一過程,可能很多人對於dns解析時間平常並沒有太在意。效能穩定、響應時間快的dns網域名稱 解析服務與不穩定、響應過慢的dns的網域名稱解析時間可能相差1秒,而對於**存在過多的網域名稱解析請求,這個時間積累起來就非常地多了。
減少網域名稱dns解析時間將網頁載入速度提公升到新層次-dns快取/預載入/多網域名稱
一、網域名稱dns解析原理和過程
1、dns是怎麼來的?dns 是網域名稱系統 (domain name system) 的縮寫。在internet上網域名稱與ip位址之間是一對一(或者多對一)的,網域名稱雖然便於人們記憶,但機器之間只能互相認識ip位址,它們之間的轉換工作 稱為網域名稱解析,網域名稱解析需要由專門的網域名稱解析伺服器來完成,dns就是進行網域名稱解析的伺服器。
2、dns解析的基本過程一:查詢本地網域名稱dns快取。當使用者通過瀏覽器訪問某網域名稱時,瀏覽器首先會在自己的快取中查詢是否有該網域名稱對應的ip位址,例如計算機系統hosts檔案網域名稱對應ip、路由器快取、isp(網際網路服務提供商)dns快取。
3、dns解析的基本過程二:通過上面的dns查詢依然沒有找到想你的網域名稱對應的ip位址,那麼就要進入根伺服器進行查詢。全球共有13臺根邏 輯網域名稱伺服器。這13臺邏輯根網域名稱伺服器中名字分別為「a」至「m」,真實的根伺服器在2023年1月25日的資料為386臺,分布於全球各大洲。
4、在根網域名稱伺服器中雖然沒有每個網域名稱的具體資訊,但儲存了負責每個域(如com、net、org等)的解析的網域名稱伺服器的位址資訊。根網域名稱服 務器會將其管轄範圍內頂級網域名稱(如.com)伺服器ip告訴本地dns伺服器,這樣你的網域名稱查詢請求會進入到相應的頂級網域名稱伺服器。
5、dns解析的基本過程三:頂級網域名稱伺服器收到請求後檢視區域檔案記錄,若無則將其管轄範圍內主網域名稱(不帶任何字首的網域名稱,如 freehao123.com)伺服器的ip位址告訴本地dns伺服器。如果還是沒有找到,則進入到下一級網域名稱伺服器進行查詢。如此重複,直到找到正確的 結果為止。
6、查詢到正確的網域名稱對應ip位址後,本地網域名稱伺服器把返回的結果儲存到快取,以備下一次使用,同時將該結果反饋給客戶端,客戶端通過這個ip 位址與web伺服器建立鏈結。於是你的瀏覽器就正常訪問**了。下圖是對google.com為例,解釋使用者在訪問谷歌時dns解析的全過程。
二、瀏覽器載入網頁的基本過程
1、從瀏覽器位址列的請求鏈結開始,瀏覽器通過dns解析查到網域名稱對映的ip位址,成功之後瀏覽器端向此ip位址取得連線,成功連線之後,瀏覽器端將請求頭資訊通過http協議向此ip位址所在伺服器發起請求,伺服器接受到請求之後等待處理。
三、合理利用dns ttl值 增加網域名稱的快取命中率
1、dns 伺服器採用遞迴或迭代來處理客戶端查詢時,它們將發現並獲得大量有關 dns 命名空間的重要資訊。然後這些資訊由伺服器快取。快取為 dns 解析流行名稱的後續查詢提供了加速效能的方法,同時大大減少了網路上與 dns 相關的查詢通訊量。
2、ttl(time-to-live)即一條網域名稱解析記錄在dns伺服器上快取時間。當資訊快取時,生存時間 (ttl) 值適用於所有快取的 rr。只要快取 rr 的 ttl 沒有到期,dns 伺服器就可繼續快取並再次使用 rr 來應答與這些 rr 相匹配的客戶端提出的查詢。
3、適當地增大ttl值可以讓dns server快取該網域名稱更長時間,增加快取的命中率。ttl一般預設為一小時,可以根據實際情況設為一天甚至一周以上。當然,如果你網域名稱的ip經常變化, 則ttl不應過大,否則各地的dns server會暫時無法獲得新的正確的ip位址。
四、合理使用dns-prefetch讓dns預讀取
1、從上面瀏覽器載入網頁的過程可以看出,網頁的請求是可以多工同時進行的,對於網頁有多個dns請求的情況,可以讓瀏覽器在後台先把要使用的dns請求默默地完成,這樣當使用者在開啟新的網頁時,就可以節省dns查詢的時間了。
2、控制瀏覽器的dns預讀取就是dns-prefetch標籤了,dns prefetch應該盡量的放在網頁的前面,格式類似是:
3、預設情況下瀏覽器會有隱式的dns prefetch,即會對頁面中和當前網域名稱(正在瀏覽網頁的網域名稱)不在同乙個域的網域名稱進行預獲取,並且快取結果,我們可以通過下面的標籤禁止隱式的dns prefetch:
4、需要注意的就是,dns prefetch只需要在使用者在第一次開啟**時使用即可,沒有必要每個頁面都使用dns prefetch,否則就是重複dns讀取了,反而還無形中增加了dns查詢的次數,效果適得其反。
1、一般來說網頁的內容載入時會發生多個網域名稱請求服務,如果你的**js、css、等非常多的話,建議將這些檔案分別放在不同的網域名稱上,這樣瀏覽器在開啟某乙個頁面時就可以同時向這些網域名稱傳送dns解析請求了,能在一定程度上減少dns時間。
2、網頁的內容越多,分析的網域名稱應該盡量多一些。例如html、htm,js、css,jpg、png、gif,php、asp都可以放在不同 的網域名稱上。在實際應用上,使用全站cdn或者是靜態檔案cdn就可以實現上述效果,並且結合css sprite一起來使用的。
3、css sprite的作用恰恰相反,它不是增加網域名稱請求,而減少網域名稱dns請求,主要是用在上。它允許你將乙個頁面涉及到的所有零星都包含到一張大圖中去,這樣一來,當訪問該頁面時,載入的就不會像以前那樣一幅一幅地慢慢顯示出來了。
六、加快網域名稱dns解析速度方法小結
1、本文介紹的用dns快取、dns預讀取、拆分網域名稱來減少網域名稱dns解析的時間的方法,對於一般的**的加速效果可能並不明顯,但是對於一些 每天dns請求達到上百萬級以上的**,dns加速的效果就顯而易見了。另外,如果發現自己的**響應速度過慢,不妨好好檢查一下網頁的dns用時。
2、除了從**本身的dns解析來加快訪問速度外,我們平常在選擇dns服務時盡量使用那些穩定可靠的dns服務,這樣的dns服務響應速度和 快取率都是非常不錯的。假如自己的**分拆了多個二級網域名稱,不妨好好用用cname,設定好ttl時間,保證**的第一次解析,可以直接從運營商的dns 快取中拿到。
DNS解析分析
網域名稱系統 網域名稱系統 英文 domain name system,縮寫 dns 是網際網路的一項服務。它作為將網域名稱和ip位址相互對映的乙個分布式資料庫,能夠使人更方便地訪問網際網路。dns使用tcp和udp埠53。當前,對於每一級網域名稱長度的限制是63個字元,網域名稱總長度則不能超過25...
DNS解析過程
你打入乙個 www.microsoft.com,按回車後。系統首先查詢本地dns客戶端快取中是否有這個網域名稱,如果你剛才已經訪問過這個 那麼快取中就會有對應的ip,系統就可以直接根據這個ip來連線 如果本地快取中無法找到對應的ip,系統將向dns伺服器 0.14 提交查詢請求。0.14在收到請求後...
DNS解析過程
名詞解釋 dns domain name server 網域名稱解析伺服器 url統一資源識別符號 ttl time to live 生存時間 ldns 本地dns伺服器 gtld全球dns伺服器 背景 在網際網路的世界中是用ip來標識一台伺服器的,因此在很早的時候大家都是通過ip來訪問其他伺服器上...