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ú)需向原始服務(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 提供商來(lái)處理,CDN 的智能 DNS 服務(wù)會(huì)幫助用戶選擇離自己距離最近的節(jié)點(diǎn),返回這個(gè)節(jié)點(diǎn)的 A(或 AAAA)記錄。然后客戶端會(huì)向 CDN 的資源節(jié)點(diǎn)發(fā)起請(qǐng)求,最終獲得資源。
在上面整個(gè)過(guò)程當(dāng)中,CDN 的智能 DNS 還充當(dāng)了負(fù)載均衡的作用。如果一個(gè)節(jié)點(diǎn)壓力過(guò)大,則可以將流量導(dǎo)向其他的節(jié)點(diǎn)。
CDN往往被用來(lái)存放靜態(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頁(yè)面。
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ù)語(yǔ),通常情況下,是直接用ip進(jìn)行回源的,但是如果客戶源站有多個(gè)ip,并且ip地址會(huì)經(jīng)常變化,對(duì)于cdn廠商來(lái)說(shuō),為了避免經(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)文章
vscode 多設(shè)備通過(guò)ssh登錄遠(yuǎn)程服務(wù)器免密登錄的解決方案
使用VSCode連接遠(yuǎn)程服務(wù)器時(shí),頻繁輸入密碼確實(shí)是一件麻煩事,本文介紹了如何通過(guò)生成SSH密鑰對(duì)的方式,實(shí)現(xiàn)免密登錄,此方法不僅適用于VSCode,也適用于任何支持SSH密鑰認(rèn)證的遠(yuǎn)程連接場(chǎng)景,大大提升工作效率2024-11-11Mac環(huán)境下搭建svn環(huán)境和使用方法
本篇文章主要介紹了Mac環(huán)境下搭建svn環(huán)境的使用方法。由于Mac自帶了svn的服務(wù)器端和客戶端功能,所以我們可以在不裝任何第三方軟件的前提下使用svn功能,只需要簡(jiǎn)單配置,有興趣的可以了解一下。2017-02-02kali linux 安裝 NVIDA 顯卡驅(qū)動(dòng)教程
本文是作者通過(guò)實(shí)際操作后分享出來(lái)的kali linux系統(tǒng)上安裝NVDIA顯卡驅(qū)動(dòng)的全過(guò)程記錄,真實(shí)有效,有需要的小伙伴可以參考下。2018-04-04Centos7使用docker搭建gitlab服務(wù)器
這篇文章主要為大家詳細(xì)介紹了Centos7使用docker搭建gitlab服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04解決JMail無(wú)法安裝的方法(帳戶名與安全標(biāo)識(shí)間無(wú)任何映射完成)
今日在遠(yuǎn)程服務(wù)器上安裝Jmail,結(jié)果提示錯(cuò)誤“帳戶名與安全標(biāo)識(shí)間無(wú)任何映射完成”2010-04-04在Mac OS X中配置Apache+PHP+MySQL運(yùn)行環(huán)境的詳細(xì)步驟
這篇文章主要介紹了在Mac OS X中配置Apache+PHP+MySQL運(yùn)行環(huán)境的詳細(xì)步驟,需要的朋友可以參考下2017-09-09服務(wù)器之間文件備份方案、如何把服務(wù)器文件自動(dòng)備份到另外一臺(tái)服務(wù)器?
很多單位都有文件服務(wù)器備份的需求,并且常常是把一個(gè)服務(wù)器的文件自動(dòng)備份到另外一臺(tái)文件服務(wù)器,下面就跟隨小編一起來(lái)了解一下2019-05-05dell 服務(wù)器開機(jī)總是提示按F1才能進(jìn)入系統(tǒng)解決方法
這篇文章主要介紹了dell 服務(wù)器開機(jī)總是提示按F1才能進(jìn)系統(tǒng)解決方法,不過(guò)提示上面一般都會(huì)有具體的提示信息,這里簡(jiǎn)單分享一下,需要的朋友可以參考下2016-04-04集群運(yùn)維自動(dòng)化工具ansible的安裝與使用(包括模塊與playbook使用)
Ansible是一款很好的基于ssh方案的,替代品,他能夠大大簡(jiǎn)化Unix管理員的自動(dòng)化配置管理與流程控制方式。它利用推送方式對(duì)客戶系統(tǒng)加以配置,這樣所有工作都可在主服務(wù)器端完成。2014-07-07