溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

瀏覽器緩存,DNS,CDN及域名解析的過程是怎樣的

發(fā)布時間:2022-02-07 15:11:02 來源:億速云 閱讀:250 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹“瀏覽器緩存,DNSCDN及域名解析的過程是怎樣的”,在日常操作中,相信很多人在瀏覽器緩存,DNS,CDN及域名解析的過程是怎樣的問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”瀏覽器緩存,DNS,CDN及域名解析的過程是怎樣的”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

瀏覽器的緩存機制

當我們使用Ctrl+F5組合鍵刷新一個頁面時,在HTTP的請求頭中會增加一些請求頭,
它告訴服務端我們要獲取最新的數(shù)據(jù)而不是緩存。

Cache-Control

這個HTTP Head字段用于指定所有緩存機制在整個請求/響應鏈中必須服從的指令。

可選值說明
Public所有內(nèi)容都將被緩存,在響應頭中設置
Private內(nèi)容只緩存到私有緩存中,在響應頭中設置
no-cache所有內(nèi)容都不會被緩存,在請求頭和響應頭中設置
no-store所有內(nèi)容都不會被緩存到緩存或Internet臨時文件中,在響應頭中設置
must-revalidation/proxy-revalidation如果緩存的內(nèi)容失敗,請求必須發(fā)送到服務器/代理以進行重新驗證,在請求頭中設置
max-age=xxx緩存的內(nèi)容將在xxx秒后失效,這個選項只在HTTP 1.1中可用,和Last-Modified一起使用時優(yōu)先級較高,在響應頭中設置

Cache-Control請求字段被各個瀏覽器支持的較好,而且它的優(yōu)先級也比較高,
它和其他一些請求字段(如Expires)同時出現(xiàn)時,Cache-Control會覆蓋掉其他字段。

Expires

Expires通常的使用格式是Expires: Sat, 25 Feb 2012 12:22:17 GMT,
后面跟著一個日期和時間,超過這個時間后,緩存的內(nèi)容將失效。

Last-Modidified/Etag

Last-Modified字段一般用于表示一個服務器上的資源的最后修改時間,
資源可以是靜態(tài)(靜態(tài)內(nèi)容自動加上Last-Modified字段),
或者動態(tài)的內(nèi)容(如Servlet提供了一個getLastModified方法,用于檢查某個動態(tài)內(nèi)容是否已經(jīng)更新),
通過這個最后修改時間可以判斷當前請求的資源是否是最新的。

一般服務器端在響應頭中返回一個Last-Modified子彈,告訴瀏覽器這個頁面的最后修改時間,
Last-Modified: Sat, 25 Feb 2012 12:55:04 GMT,瀏覽器再次請求時,
在請求頭中增加一個If-Modified-Since: Sat, 25 Feb 2012 12:55:04 GMT字段,
詢問當前緩存的頁面是否是最新的,如果是最新的就返回304狀態(tài)碼,告訴瀏覽器是最新的,服務器也不會傳輸新的數(shù)據(jù)。

與Last-Modified字段有類似功能的還有一個Etag字段,
這個字段的作用是讓服務器給每個頁面分配一個唯一的編號,
然后通過這個編號來區(qū)分當前這個頁面是否最新的。

這種方式比使用Last-Modified更加靈活,但是在后端的Web服務器有多臺時比較難處理,
因為每個Web服務器都要記住網(wǎng)站的所有資源,
否則瀏覽器返回這個編號就沒有意義了。

DNS域名解析過程

當一個用戶在瀏覽器中輸入www.kemok4.com時,DNS解析將會有將近10個步驟,這個過程大體描述如下。

瀏覽器

瀏覽器會檢查緩存中有沒有這個域名對應的解析過的IP地址,
如果緩存中有,這個解析過程就將結束。

瀏覽器緩存域名也是有限制的,不僅瀏覽器緩存大小有限制,而且緩存的時間也有限制,
通常情況下為幾分鐘到幾小時不等,
域名被緩存的時間限制可以通過TTL屬性來設置。

操作系統(tǒng)

如果用戶的瀏覽器緩存中沒有,瀏覽器會查找操作系統(tǒng)緩存中是否有這個域名對應的DNS解析結果。

其實操作系統(tǒng)也會有一個域名解析的過程,
在Windows中可以通過C:\Windows\System32\drivers\etc\hosts文件來設置,
你可以將任何域名解析到任何能夠訪問的IP地址。

在Linux中這個配置文件是/etc/hosts,
當解析到這個配置文件中的某個域名時,操作系統(tǒng)會在緩存中緩存這個解析結果,
緩存的時間同樣是受這個域名的失效時間和緩存的空間大小控制的。

本地區(qū)的域名服務器

如果在本機中仍然無法完成域名的解析,就會真正請求域名服務器來解析這個域名了。

在我們的網(wǎng)絡配置中都會有“DNS服務器地址”這一項,
操作系統(tǒng)會把這個域名設置為本地區(qū)的域名服務器(LNDS)。

這個DNS通常都提供給你本地互聯(lián)網(wǎng)接入的一個DNS解析服務,
例如,你是在學校接入互聯(lián)網(wǎng),那么你的DNS服務器肯定在你的學校,
如果你是在一個小區(qū)接入互聯(lián)網(wǎng),那這個DNS就是提供給你接入互聯(lián)網(wǎng)的應用提供商,即電信或者聯(lián)通。

這個專門的域名解析服務器性能都會很好,它們一般都會緩存域名解析結果,
當然緩存時間是受域名的失效時間控制的。

Root Server域名服務器

如果LDNS仍然沒有命中,就直接到Root Server域名服務器請求解析。

返回主域名服務器地址

根域名服務器返回給本地域名服務器一個所查詢的主域名服務器(gTLD Server)地址。
gTLD是國際頂級域名服務器,如.com,.cn,.org等,全球只有13臺左右。

向主域名服務器發(fā)送請求

本地域名服務器(Local DNS Server)再向上一步返回的gTLD服務器發(fā)送請求。

域名提供商的服務器

接受請求的gTLD服務器查找并返回此域名對應的Name Server域名服務器的地址,
這個Name Server通常就是你注冊的域名服務器。

例如,你在某個域名服務器提供商申請的域名,那么這個域名解析任務就由這個域名提供商的服務器來完成。

映射關系表

Name Server域名服務器會查詢存儲在域名和IP的映射關系表,
在正常情況下會根據(jù)域名得到目標IP記錄,連同一個TTL值返回給DNS Server域名服務器。

Local DNS Server緩存

返回該域名對應的IP和TTL值,Local DNS Server會緩存這個域名和IP的對應關系,
緩存的時間由TTL值控制。

本地系統(tǒng)緩存

把解析的結果返回給用戶,用戶根據(jù)TTL值緩存在本地系統(tǒng)緩存中,域名解析過程結束。

注:在實際的DNS解析過程中,可能還不止這10個步驟,
如Name Server也可能有很多級,或者有一個GTM來負載均衡控制,
這都有可能會影響域名解析的過程。

幾種域名解析方式

域名解析記錄主要分為A記錄,MX記錄,CNAME記錄,NS記錄,和TXT記錄。

A記錄

A代表Address,用來指定域名對應的IP地址,
A記錄可以將多個域名解析到一個IP地址,但是不能將一個域名解析到多個IP地址。

MX記錄

MX表示Mail Exchange,就是可以將某個域名下的郵件服務器指向自己的Mail Server,
DNS會將郵件發(fā)送到MX記錄的服務器,而正常通過Web請求的話,仍然解析到A記錄的IP地址。

CNAME記錄

CNAME全稱為Canonial Name(別名解析)。
所謂別名解析就是可以為一個域名設置一個或者多個別名。

NS記錄

NS記錄,為某個域名指定DNS解析服務器,也就是這個域名由指定的IP地址的DNS服務器去解析。

TXT記錄

為某個主機名或域名設置說明。

CDN工作機制

CDN也就是內(nèi)容分布網(wǎng)絡(Content Delivery Network),它是構筑在現(xiàn)有Internet上的一種先進的流量分配網(wǎng)絡。
其目的是通過在現(xiàn)有的Internet中增加一層新的網(wǎng)絡架構,
將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡“邊緣”,使用戶可以就近取得所需的內(nèi)容,
提高用戶訪問網(wǎng)站的響應速度。

目前CDN都以緩存網(wǎng)站中的靜態(tài)數(shù)據(jù)為主,如CSS,JS,圖片和靜態(tài)頁面等數(shù)據(jù)。
用戶在先從主站服務器請求到動態(tài)內(nèi)容后,再從CDN上下載這些靜態(tài)資源,從而加速網(wǎng)頁數(shù)據(jù)內(nèi)容的下載速度。

CDN架構

一個用戶訪問某個靜態(tài)文件(如CSS文件),這個靜態(tài)文件的域名假如是cdn.jb51.net,
那么首先要向Local DNS服務器發(fā)起請求,
一般經(jīng)過迭代解析后回到這個域名的注冊服務器去解析,一般每個公司都會有一個DNS解析服務器。

這時這個DNS解析服務器通常會把它重新CNAME解析到另一個另外一個域名,
而這個域名最終會被指向CDN全局中的DNS負載均衡服務器,再由這個GTM來最終分配是哪個地方的訪問用戶,
返回給離這個訪問用戶最近的CDN節(jié)點。

拿到DNS解析結果,用戶就直接去這個CDN節(jié)點訪問這個靜態(tài)資源文件了,
如果這個節(jié)點中所請求的文件不存在,就會再回到源站去獲取這個文件,然后再返回給用戶。

到此,關于“瀏覽器緩存,DNS,CDN及域名解析的過程是怎樣的”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI