CDN的加速緩存原理與回源機(jī)制解析
CDN 是一個(gè)分布式的內(nèi)容分發(fā)網(wǎng)絡(luò)。當(dāng)用戶請(qǐng)求一個(gè)網(wǎng)絡(luò)資源時(shí),用戶請(qǐng)求的是 CDN 提供的資源。和域名系統(tǒng)類似,當(dāng)用戶請(qǐng)求一個(gè)資源時(shí),首先會(huì)接觸到一個(gè)類似域名系統(tǒng)中目錄的服務(wù),這個(gè)服務(wù)會(huì)告訴用戶究竟去哪個(gè) IP 獲取這個(gè)資源。事實(shí)上,很多大型的應(yīng)用,會(huì)把 DNS 解析作為一種負(fù)載均衡的手段。當(dāng)用戶請(qǐng)求一個(gè)網(wǎng)址的時(shí)候,會(huì)從該網(wǎng)站提供的智能 DNS 中獲取網(wǎng)站的 IP。
CDN 是什么?
CDN加速的原理基于兩個(gè)關(guān)鍵概念:緩存和就近訪問。
1. 緩存:CDN節(jié)點(diǎn)會(huì)將網(wǎng)站的靜態(tài)資源(如圖片、CSS、JavaScript等)復(fù)制到各個(gè)服務(wù)器上,并將其存儲(chǔ)在高速緩存中。當(dāng)用戶發(fā)起請(qǐng)求時(shí),CDN會(huì)先檢查是否有緩存的副本。如果有,CDN會(huì)直接將資源返回給用戶,而無需向原始服務(wù)器發(fā)出請(qǐng)求。
2. 就近訪問:CDN網(wǎng)絡(luò)由分布在全球各地的節(jié)點(diǎn)組成。當(dāng)用戶發(fā)起請(qǐng)求時(shí),CDN會(huì)根據(jù)用戶的地理位置,將請(qǐng)求路由到距離用戶最近的節(jié)點(diǎn)。這樣做可以減少數(shù)據(jù)傳輸?shù)木嚯x和網(wǎng)絡(luò)延遲,提高網(wǎng)站的加載速度。
CDN緩存
當(dāng)用戶請(qǐng)求一個(gè)靜態(tài)資源的時(shí)候,首先會(huì)觸發(fā)域名系統(tǒng)的解析。域名系統(tǒng)會(huì)將解析的責(zé)任交由 CDN 提供商來處理,CDN 的智能 DNS 服務(wù)會(huì)幫助用戶選擇離自己距離最近的節(jié)點(diǎn),返回這個(gè)節(jié)點(diǎn)的 A(或 AAAA)記錄。然后客戶端會(huì)向 CDN 的資源節(jié)點(diǎn)發(fā)起請(qǐng)求,最終獲得資源。
在上面整個(gè)過程當(dāng)中,CDN 的智能 DNS 還充當(dāng)了負(fù)載均衡的作用。如果一個(gè)節(jié)點(diǎn)壓力過大,則可以將流量導(dǎo)向其他的節(jié)點(diǎn)。
CDN往往被用來存放靜態(tài)資源。所謂靜態(tài)資源就像JS CSS 圖片等不需要業(yè)務(wù)服務(wù)器進(jìn)行計(jì)算得到的資源。而動(dòng)態(tài)資源, 顧名思義就是i需要后端實(shí)時(shí)動(dòng)態(tài)生成的資源, 較為常見的就是JSP ASP 或者依賴服務(wù)端渲染得到的HTML頁面。
CDN 回源
CDN 回源就是 CDN 節(jié)點(diǎn)到源站請(qǐng)求資源,重新設(shè)置緩存。在 CDN 的設(shè)計(jì)當(dāng)中,CDN 實(shí)際上提供的是數(shù)據(jù)的緩存。而原始數(shù)據(jù),則由服務(wù)的提供者提供。
用戶的請(qǐng)求先到達(dá)緩存層,如果緩存被穿透,才到達(dá)最終的存儲(chǔ)層。緩存的設(shè)計(jì)必須是分布式的,因?yàn)榻^大多數(shù)的資源使用都會(huì)發(fā)生在緩存上,只有極少數(shù)的請(qǐng)求才會(huì)穿透到底層的存儲(chǔ)。通常這種設(shè)計(jì),我們期望緩存層至少需要幫擋住 99% 的流量。既然緩存層能擋住 99% 的流量,那么實(shí)際的數(shù)據(jù)存儲(chǔ)就可以交由源站點(diǎn)完成。
源站內(nèi)容有更新的時(shí)候,源站主動(dòng)把內(nèi)容推送到CDN節(jié)點(diǎn)。常規(guī)的CDN都是回源的。即:當(dāng)有用戶訪問某一個(gè)URL的時(shí)候,如果被解析到的那個(gè)CDN節(jié)點(diǎn)沒有緩存響應(yīng)的內(nèi)容,或者是緩存已經(jīng)到期,就會(huì)回源站去獲取。如果沒有人訪問,那么CDN節(jié)點(diǎn)不會(huì)主動(dòng)去源站拿的。
回源域名一般是cdn領(lǐng)域的專業(yè)術(shù)語,通常情況下,是直接用ip進(jìn)行回源的,但是如果客戶源站有多個(gè)ip,并且ip地址會(huì)經(jīng)常變化,對(duì)于cdn廠商來說,為了避免經(jīng)常更改配置(回源ip),會(huì)采用回源域名方式進(jìn)行回源,這樣即使源站的ip變化了,也不影響原有的配置。
CDN 回源有 3 種情況,一種是 CDN 節(jié)點(diǎn)沒有對(duì)應(yīng)資源時(shí)主動(dòng)到源站獲取資源;另一種是緩存失效后,CDN 節(jié)點(diǎn)到源站獲取資源;還有一種情況是在 CDN 管理后臺(tái)或者使用開放接口主動(dòng)刷新觸發(fā)回源。
總結(jié)
CDN適用于靜態(tài)技術(shù),比如圖片,游戲下載,視頻等。缺點(diǎn):CDN用到的是緩存技術(shù),加速的是網(wǎng)站的靜態(tài)、公用部分。如果是動(dòng)態(tài)網(wǎng)站,不能緩存,每次都要回源服務(wù)器訪問,用了CDN反而增加了一個(gè)環(huán)節(jié),不好。
到此這篇關(guān)于CDN的加速緩存原理與回源機(jī)制解析的文章就介紹到這了,更多相關(guān)CDN的加速緩存與回源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
服務(wù)器端如何使用CORS來允許設(shè)置Cookie
這篇文章主要為大家介紹了服務(wù)器端如何使用CORS來允許設(shè)置Cookie的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01服務(wù)器之間文件備份方案、如何把服務(wù)器文件自動(dòng)備份到另外一臺(tái)服務(wù)器?
很多單位都有文件服務(wù)器備份的需求,并且常常是把一個(gè)服務(wù)器的文件自動(dòng)備份到另外一臺(tái)文件服務(wù)器,下面就跟隨小編一起來了解一下2019-05-05rashost的windows VPS重裝系統(tǒng)的方法
看rashost官方,rebuid系統(tǒng)有l(wèi)inux的說明,居然沒windows的說明,只好試試了2011-10-10selenium+chromedriver在服務(wù)器運(yùn)行的詳細(xì)教程
這篇文章主要介紹了selenium+chromedriver在服務(wù)器運(yùn)行的詳細(xì)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03護(hù)衛(wèi)神 主機(jī)管理系統(tǒng)使用說明篇 系統(tǒng)設(shè)置
護(hù)衛(wèi)神·主機(jī)管理系統(tǒng)支持在Windows Server 2003/2008/2012,含32位和64位,直接開設(shè)配置WEB站、FTP站,以及SQL Server和MySQL,是您開設(shè)和管理虛擬主機(jī)的絕好幫手,但是對(duì)于新用戶可能在使用上有一些困難,因此請(qǐng)仔細(xì)閱讀如下說明文檔2015-01-01Web服務(wù)器和應(yīng)用服務(wù)器之間的區(qū)別詳解
這篇文章主要介紹了Web服務(wù)器和應(yīng)用服務(wù)器之間的區(qū)別詳解,應(yīng)用服務(wù)器是為客戶端提供對(duì)業(yè)務(wù)邏輯的訪問這種服務(wù)器,根據(jù)客戶端的請(qǐng)求會(huì)將數(shù)據(jù)轉(zhuǎn)化為動(dòng)態(tài)內(nèi)容,一般還需要數(shù)據(jù)庫的支持,應(yīng)用服務(wù)器的搭建很多時(shí)候依賴于應(yīng)用程序的開發(fā)語言,需要的朋友可以參考下2023-07-07