您好,登錄后才能下訂單哦!
這篇文章主要介紹“瀏覽器緩存,DNS,CDN及域名解析的過程是怎樣的”,在日常操作中,相信很多人在瀏覽器緩存,DNS,CDN及域名解析的過程是怎樣的問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”瀏覽器緩存,DNS,CDN及域名解析的過程是怎樣的”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
當我們使用Ctrl+F5組合鍵刷新一個頁面時,在HTTP的請求頭中會增加一些請求頭,
它告訴服務端我們要獲取最新的數據而不是緩存。
這個HTTP Head字段用于指定所有緩存機制在整個請求/響應鏈中必須服從的指令。
可選值 | 說明 |
---|---|
Public | 所有內容都將被緩存,在響應頭中設置 |
Private | 內容只緩存到私有緩存中,在響應頭中設置 |
no-cache | 所有內容都不會被緩存,在請求頭和響應頭中設置 |
no-store | 所有內容都不會被緩存到緩存或Internet臨時文件中,在響應頭中設置 |
must-revalidation/proxy-revalidation | 如果緩存的內容失敗,請求必須發送到服務器/代理以進行重新驗證,在請求頭中設置 |
max-age=xxx | 緩存的內容將在xxx秒后失效,這個選項只在HTTP 1.1中可用,和Last-Modified一起使用時優先級較高,在響應頭中設置 |
Cache-Control請求字段被各個瀏覽器支持的較好,而且它的優先級也比較高,
它和其他一些請求字段(如Expires)同時出現時,Cache-Control會覆蓋掉其他字段。
Expires通常的使用格式是Expires: Sat, 25 Feb 2012 12:22:17 GMT
,
后面跟著一個日期和時間,超過這個時間后,緩存的內容將失效。
Last-Modified字段一般用于表示一個服務器上的資源的最后修改時間,
資源可以是靜態(靜態內容自動加上Last-Modified字段),
或者動態的內容(如Servlet提供了一個getLastModified方法,用于檢查某個動態內容是否已經更新),
通過這個最后修改時間可以判斷當前請求的資源是否是最新的。
一般服務器端在響應頭中返回一個Last-Modified子彈,告訴瀏覽器這個頁面的最后修改時間,
如Last-Modified: Sat, 25 Feb 2012 12:55:04 GMT
,瀏覽器再次請求時,
在請求頭中增加一個If-Modified-Since: Sat, 25 Feb 2012 12:55:04 GMT
字段,
詢問當前緩存的頁面是否是最新的,如果是最新的就返回304狀態碼,告訴瀏覽器是最新的,服務器也不會傳輸新的數據。
與Last-Modified字段有類似功能的還有一個Etag字段,
這個字段的作用是讓服務器給每個頁面分配一個唯一的編號,
然后通過這個編號來區分當前這個頁面是否最新的。
這種方式比使用Last-Modified更加靈活,但是在后端的Web服務器有多臺時比較難處理,
因為每個Web服務器都要記住網站的所有資源,
否則瀏覽器返回這個編號就沒有意義了。
當一個用戶在瀏覽器中輸入www.mlszssj.com
時,DNS解析將會有將近10個步驟,這個過程大體描述如下。
瀏覽器會檢查緩存中有沒有這個域名對應的解析過的IP地址,
如果緩存中有,這個解析過程就將結束。
瀏覽器緩存域名也是有限制的,不僅瀏覽器緩存大小有限制,而且緩存的時間也有限制,
通常情況下為幾分鐘到幾小時不等,
域名被緩存的時間限制可以通過TTL屬性來設置。
如果用戶的瀏覽器緩存中沒有,瀏覽器會查找操作系統緩存中是否有這個域名對應的DNS解析結果。
其實操作系統也會有一個域名解析的過程,
在Windows中可以通過C:\Windows\System32\drivers\etc\hosts
文件來設置,
你可以將任何域名解析到任何能夠訪問的IP地址。
在Linux中這個配置文件是/etc/hosts
,
當解析到這個配置文件中的某個域名時,操作系統會在緩存中緩存這個解析結果,
緩存的時間同樣是受這個域名的失效時間和緩存的空間大小控制的。
如果在本機中仍然無法完成域名的解析,就會真正請求域名服務器來解析這個域名了。
在我們的網絡配置中都會有“DNS服務器地址”這一項,
操作系統會把這個域名設置為本地區的域名服務器(LNDS)。
這個DNS通常都提供給你本地互聯網接入的一個DNS解析服務,
例如,你是在學校接入互聯網,那么你的DNS服務器肯定在你的學校,
如果你是在一個小區接入互聯網,那這個DNS就是提供給你接入互聯網的應用提供商,即電信或者聯通。
這個專門的域名解析服務器性能都會很好,它們一般都會緩存域名解析結果,
當然緩存時間是受域名的失效時間控制的。
如果LDNS仍然沒有命中,就直接到Root Server域名服務器請求解析。
根域名服務器返回給本地域名服務器一個所查詢的主域名服務器(gTLD Server)地址。
gTLD是國際頂級域名服務器,如.com
,.cn
,.org
等,全球只有13臺左右。
本地域名服務器(Local DNS Server)再向上一步返回的gTLD服務器發送請求。
接受請求的gTLD服務器查找并返回此域名對應的Name Server域名服務器的地址,
這個Name Server通常就是你注冊的域名服務器。
例如,你在某個域名服務器提供商申請的域名,那么這個域名解析任務就由這個域名提供商的服務器來完成。
Name Server域名服務器會查詢存儲在域名和IP的映射關系表,
在正常情況下會根據域名得到目標IP記錄,連同一個TTL值返回給DNS Server域名服務器。
返回該域名對應的IP和TTL值,Local DNS Server會緩存這個域名和IP的對應關系,
緩存的時間由TTL值控制。
把解析的結果返回給用戶,用戶根據TTL值緩存在本地系統緩存中,域名解析過程結束。
注:在實際的DNS解析過程中,可能還不止這10個步驟,
如Name Server也可能有很多級,或者有一個GTM來負載均衡控制,
這都有可能會影響域名解析的過程。
域名解析記錄主要分為A記錄,MX記錄,CNAME記錄,NS記錄,和TXT記錄。
A代表Address,用來指定域名對應的IP地址,
A記錄可以將多個域名解析到一個IP地址,但是不能將一個域名解析到多個IP地址。
MX表示Mail Exchange,就是可以將某個域名下的郵件服務器指向自己的Mail Server,
DNS會將郵件發送到MX記錄的服務器,而正常通過Web請求的話,仍然解析到A記錄的IP地址。
CNAME全稱為Canonial Name(別名解析)。
所謂別名解析就是可以為一個域名設置一個或者多個別名。
NS記錄,為某個域名指定DNS解析服務器,也就是這個域名由指定的IP地址的DNS服務器去解析。
為某個主機名或域名設置說明。
CDN也就是內容分布網絡(Content Delivery Network),它是構筑在現有Internet上的一種先進的流量分配網絡。
其目的是通過在現有的Internet中增加一層新的網絡架構,
將網站的內容發布到最接近用戶的網絡“邊緣”,使用戶可以就近取得所需的內容,
提高用戶訪問網站的響應速度。
目前CDN都以緩存網站中的靜態數據為主,如CSS,JS,圖片和靜態頁面等數據。
用戶在先從主站服務器請求到動態內容后,再從CDN上下載這些靜態資源,從而加速網頁數據內容的下載速度。
一個用戶訪問某個靜態文件(如CSS文件),這個靜態文件的域名假如是cdn.jb51.net
,
那么首先要向Local DNS服務器發起請求,
一般經過迭代解析后回到這個域名的注冊服務器去解析,一般每個公司都會有一個DNS解析服務器。
這時這個DNS解析服務器通常會把它重新CNAME解析到另一個另外一個域名,
而這個域名最終會被指向CDN全局中的DNS負載均衡服務器,再由這個GTM來最終分配是哪個地方的訪問用戶,
返回給離這個訪問用戶最近的CDN節點。
拿到DNS解析結果,用戶就直接去這個CDN節點訪問這個靜態資源文件了,
如果這個節點中所請求的文件不存在,就會再回到源站去獲取這個文件,然后再返回給用戶。
到此,關于“瀏覽器緩存,DNS,CDN及域名解析的過程是怎樣的”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。