CDN的加速緩存原理與回源機(jī)制解析
CDN 是一個分布式的內(nèi)容分發(fā)網(wǎng)絡(luò)。當(dāng)用戶請求一個網(wǎng)絡(luò)資源時,用戶請求的是 CDN 提供的資源。和域名系統(tǒng)類似,當(dāng)用戶請求一個資源時,首先會接觸到一個類似域名系統(tǒng)中目錄的服務(wù),這個服務(wù)會告訴用戶究竟去哪個 IP 獲取這個資源。事實(shí)上,很多大型的應(yīng)用,會把 DNS 解析作為一種負(fù)載均衡的手段。當(dāng)用戶請求一個網(wǎng)址的時候,會從該網(wǎng)站提供的智能 DNS 中獲取網(wǎng)站的 IP。
CDN 是什么?
CDN加速的原理基于兩個關(guān)鍵概念:緩存和就近訪問。
1. 緩存:CDN節(jié)點(diǎn)會將網(wǎng)站的靜態(tài)資源(如圖片、CSS、JavaScript等)復(fù)制到各個服務(wù)器上,并將其存儲在高速緩存中。當(dāng)用戶發(fā)起請求時,CDN會先檢查是否有緩存的副本。如果有,CDN會直接將資源返回給用戶,而無需向原始服務(wù)器發(fā)出請求。
2. 就近訪問:CDN網(wǎng)絡(luò)由分布在全球各地的節(jié)點(diǎn)組成。當(dāng)用戶發(fā)起請求時,CDN會根據(jù)用戶的地理位置,將請求路由到距離用戶最近的節(jié)點(diǎn)。這樣做可以減少數(shù)據(jù)傳輸?shù)木嚯x和網(wǎng)絡(luò)延遲,提高網(wǎng)站的加載速度。
CDN緩存
當(dāng)用戶請求一個靜態(tài)資源的時候,首先會觸發(fā)域名系統(tǒng)的解析。域名系統(tǒng)會將解析的責(zé)任交由 CDN 提供商來處理,CDN 的智能 DNS 服務(wù)會幫助用戶選擇離自己距離最近的節(jié)點(diǎn),返回這個節(jié)點(diǎn)的 A(或 AAAA)記錄。然后客戶端會向 CDN 的資源節(jié)點(diǎn)發(fā)起請求,最終獲得資源。
在上面整個過程當(dāng)中,CDN 的智能 DNS 還充當(dāng)了負(fù)載均衡的作用。如果一個節(jié)點(diǎn)壓力過大,則可以將流量導(dǎo)向其他的節(jié)點(diǎn)。
CDN往往被用來存放靜態(tài)資源。所謂靜態(tài)資源就像JS CSS 圖片等不需要業(yè)務(wù)服務(wù)器進(jìn)行計(jì)算得到的資源。而動態(tài)資源, 顧名思義就是i需要后端實(shí)時動態(tài)生成的資源, 較為常見的就是JSP ASP 或者依賴服務(wù)端渲染得到的HTML頁面。
CDN 回源
CDN 回源就是 CDN 節(jié)點(diǎn)到源站請求資源,重新設(shè)置緩存。在 CDN 的設(shè)計(jì)當(dāng)中,CDN 實(shí)際上提供的是數(shù)據(jù)的緩存。而原始數(shù)據(jù),則由服務(wù)的提供者提供。
用戶的請求先到達(dá)緩存層,如果緩存被穿透,才到達(dá)最終的存儲層。緩存的設(shè)計(jì)必須是分布式的,因?yàn)榻^大多數(shù)的資源使用都會發(fā)生在緩存上,只有極少數(shù)的請求才會穿透到底層的存儲。通常這種設(shè)計(jì),我們期望緩存層至少需要幫擋住 99% 的流量。既然緩存層能擋住 99% 的流量,那么實(shí)際的數(shù)據(jù)存儲就可以交由源站點(diǎn)完成。
源站內(nèi)容有更新的時候,源站主動把內(nèi)容推送到CDN節(jié)點(diǎn)。常規(guī)的CDN都是回源的。即:當(dāng)有用戶訪問某一個URL的時候,如果被解析到的那個CDN節(jié)點(diǎn)沒有緩存響應(yīng)的內(nèi)容,或者是緩存已經(jīng)到期,就會回源站去獲取。如果沒有人訪問,那么CDN節(jié)點(diǎn)不會主動去源站拿的。
回源域名一般是cdn領(lǐng)域的專業(yè)術(shù)語,通常情況下,是直接用ip進(jìn)行回源的,但是如果客戶源站有多個ip,并且ip地址會經(jīng)常變化,對于cdn廠商來說,為了避免經(jīng)常更改配置(回源ip),會采用回源域名方式進(jìn)行回源,這樣即使源站的ip變化了,也不影響原有的配置。
CDN 回源有 3 種情況,一種是 CDN 節(jié)點(diǎn)沒有對應(yīng)資源時主動到源站獲取資源;另一種是緩存失效后,CDN 節(jié)點(diǎn)到源站獲取資源;還有一種情況是在 CDN 管理后臺或者使用開放接口主動刷新觸發(fā)回源。
總結(jié)
CDN適用于靜態(tài)技術(shù),比如圖片,游戲下載,視頻等。缺點(diǎn):CDN用到的是緩存技術(shù),加速的是網(wǎng)站的靜態(tài)、公用部分。如果是動態(tài)網(wǎng)站,不能緩存,每次都要回源服務(wù)器訪問,用了CDN反而增加了一個環(huán)節(jié),不好。
到此這篇關(guān)于CDN的加速緩存原理與回源機(jī)制解析的文章就介紹到這了,更多相關(guān)CDN的加速緩存與回源內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python和c++代碼實(shí)現(xiàn)高性能異構(gòu)分布式并行互聯(lián)系統(tǒng)
這篇文章主要介紹了Python和c++代碼實(shí)現(xiàn)高性能異構(gòu)分布式并行互聯(lián)系統(tǒng),包含通信模塊、任務(wù)調(diào)度模塊、數(shù)據(jù)管理模塊、負(fù)載均衡模塊、故障容錯模塊、性能優(yōu)化模塊、日志與監(jiān)控模塊,需要的朋友可以參考下2024-08-08
windows系統(tǒng)搭建WEB服務(wù)器詳細(xì)教程
這篇文章主要為大家詳細(xì)介紹了windows系統(tǒng)搭建WEB服務(wù)器詳細(xì)教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
虛擬主機(jī)管理系統(tǒng)DirectAdmin、Websitepanel和Cpanel功能對比評測
最近不少人問DirectAdmin、Websitepanel和Cpanel的區(qū)別,這里簡單介紹下,方便需要的朋友2013-12-12
MongoDB學(xué)習(xí)筆記(一) MongoDB介紹與安裝方法
最近開始學(xué)習(xí)非關(guān)系型數(shù)據(jù)庫MongoDB,卻在博客園上找不到比較系統(tǒng)的教程,很多資料都要去查閱英文網(wǎng)站,效率比較低下。本人不才,借著自學(xué)的機(jī)會把心得體會都記錄下來,方便感興趣的童鞋分享討論2013-07-07
phpnow重新安裝mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了phpnow重新安裝mysql數(shù)據(jù)庫的方法,phpnow是一個本地PHP開發(fā)環(huán)境,簡單易用,需要的朋友可以參考下2014-05-05
FileZilla Server搭建FTP服務(wù)器配置及425錯誤與TLS警告解決方法詳解
本文詳細(xì)講解了FileZilla Server搭建FTP服務(wù)器配置以及425 Can't open data,You appear to be behind a NAT router,FTP over TLS is not enabled等相關(guān)問題的解決方法2018-10-10

