七牛云CDN加速WordPress網(wǎng)站 - CDN介紹

本文章以比較通俗的語(yǔ)言講述下 CDN 是什么,CDN 為什么能加速網(wǎng)站訪問(wèn),為什么大部分網(wǎng)站都要使用 CDN,涉及細(xì)節(jié)部分并不需要我們用戶了解,所以不會(huì)詳細(xì)描述。文章如有錯(cuò)誤,歡迎指出,也歡迎一起探討。

1、CDN 是什么

CDN即內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network)的簡(jiǎn)稱。簡(jiǎn)單地說(shuō)就是 CDN 廠商在全國(guó)甚至全球各地,都部署了機(jī)房,每個(gè)機(jī)房就是一個(gè) CDN 節(jié)點(diǎn),然后節(jié)點(diǎn)自身也做了一定的優(yōu)化。然后北京的用戶訪問(wèn)就會(huì)分配到北京或者北京周邊的節(jié)點(diǎn),深圳的用戶訪問(wèn)就會(huì)分配到深圳或者深圳周邊的節(jié)點(diǎn),就近原則;如果你的網(wǎng)站流量很大,這種策略也類似于負(fù)載均衡(一對(duì)一、一對(duì)多),一萬(wàn)個(gè)人同時(shí)訪問(wèn)你的網(wǎng)站,分配到全國(guó)各個(gè)節(jié)點(diǎn)肯定比只分配到一臺(tái)服務(wù)器是要好的。

2、為什么 CDN 能夠加速網(wǎng)站訪問(wèn)

首先說(shuō)下最常見(jiàn)的網(wǎng)站架構(gòu),最常見(jiàn)的網(wǎng)站是搭建在一臺(tái)服務(wù)器上的,服務(wù)器上配置好 nginx、mysql、php 等網(wǎng)站運(yùn)行的必備環(huán)境,然后網(wǎng)站就可以運(yùn)行起來(lái),可以通過(guò) IP 地址訪問(wèn),如果你有域名的話,可以通過(guò)把域名解析到這個(gè) IP 地址,然后用戶輸入域名就可以訪問(wèn)你的網(wǎng)站了。

2.1、沒(méi)有 CDN 之前訪問(wèn)情況

比如你的服務(wù)器在北京,這時(shí)候北京的用戶訪問(wèn)你的網(wǎng)站,離服務(wù)器近,訪問(wèn)速度當(dāng)然也快;深圳的用戶訪問(wèn)你的網(wǎng)站,由于離北京比較遠(yuǎn),訪問(wèn)速度相對(duì)于北京用戶來(lái)說(shuō)會(huì)稍慢,但是由于都在國(guó)內(nèi),差異不大;如果這時(shí)候美國(guó)的用戶訪問(wèn)你的網(wǎng)站,由于這時(shí)候?qū)儆诳鐕?guó)訪問(wèn),訪問(wèn)網(wǎng)站的速度就會(huì)大大下降,嚴(yán)重影響用戶體驗(yàn)。

2.1、使用 CDN 之后訪問(wèn)情況

當(dāng)你的網(wǎng)站使用 CDN 后,北京的用戶訪問(wèn)你的網(wǎng)站,會(huì)分配到北京或者北京周邊的節(jié)點(diǎn);深圳的用戶訪問(wèn)會(huì)分配到深圳或者深圳周邊的節(jié)點(diǎn);美國(guó)的用戶訪問(wèn)會(huì)分配到美國(guó)或者美國(guó)周邊的節(jié)點(diǎn)。當(dāng)訪問(wèn)人數(shù)很多的時(shí)候,還能夠減小你北京服務(wù)器(源站)的壓力,因?yàn)檫@時(shí)候用戶訪問(wèn)的請(qǐng)求其實(shí)沒(méi)有到服務(wù)器,全部在 CDN 節(jié)點(diǎn)上。

并且當(dāng)該節(jié)點(diǎn)收到請(qǐng)請(qǐng)求后,會(huì)把該請(qǐng)求內(nèi)容緩存到 CDN 節(jié)點(diǎn)上,后續(xù)還有用戶訪問(wèn)到該 CDN 節(jié)點(diǎn),則直接返回,訪問(wèn)速度大大提高,所以有時(shí)候會(huì)發(fā)現(xiàn)用了 CDN,但是請(qǐng)求還是慢,一般是因?yàn)槭浅醮卧L問(wèn),該 CDN 節(jié)點(diǎn)沒(méi)有該內(nèi)容的緩存,也就是沒(méi)有命中緩存,后續(xù)再次訪問(wèn)的話就會(huì)很快。

3、使用 CDN 后的利弊

3.1、利

  1. 加速網(wǎng)站訪問(wèn),就近分配節(jié)點(diǎn),實(shí)現(xiàn)跨運(yùn)營(yíng)商,跨區(qū)域全網(wǎng)覆蓋。
  2. 隱藏服務(wù)器真實(shí) IP 地址
  3. 可以使用各 CDN 產(chǎn)商的功能,比如防盜鏈,不同資源的針對(duì)性加速等等
  4. 節(jié)約服務(wù)器成本。即使購(gòu)買 1 核 1 G 1M 的服務(wù)器也能應(yīng)對(duì)大部分場(chǎng)景,因?yàn)橹挥械谝淮尾判枰卦?,后續(xù)訪問(wèn)的壓力都在 CDN 節(jié)點(diǎn)

3.2、弊

  1. 當(dāng)一個(gè)文件名相同的文件,文件的內(nèi)容發(fā)生了變化,由于之前已經(jīng)有用戶訪問(wèn)了該文件,文件就被緩存到 CDN 節(jié)點(diǎn)中,這時(shí)候你即使已經(jīng)上傳了新的文件,用戶訪問(wèn)的還是舊文件,這時(shí)候就需要手動(dòng)刷新 CDN 緩存或者帶 query 參數(shù)請(qǐng)求,CDN 節(jié)點(diǎn)才會(huì)再次回到原站請(qǐng)求最新的文件。有時(shí)候開(kāi)發(fā)過(guò)程中沒(méi)注意這個(gè)問(wèn)題會(huì)非常苦惱。
  2. 一不小心一棟樓就沒(méi)了,使用 CDN 記得配置到防盜鏈等訪問(wèn)控制,不然很容易被盜刷。

4、CDN常用名詞解釋

  1. 加速域名:也就是你在 CDN 廠商后臺(tái)添加的域名,比如你添加了一個(gè)域名,cdn.timhbw.com,那么這個(gè)就是加速域名,并不是說(shuō)你現(xiàn)在網(wǎng)站的域名(timhbw.com)
  2. CNAME 記錄:在你的域名解析商,點(diǎn)擊【添加解析】的時(shí)候,會(huì)讓你選擇記錄類型,用的最多的是 A,就是指向 IP。CNAME 也是記錄類型的一種,Canonical Name 翻譯為中文也就是別名。比如 cdn.timhbw.com 你添加了一個(gè) CNAME 記錄,記錄值是:timhbw.com,那么訪問(wèn) cdn.timhbw.com的時(shí)候,所有的請(qǐng)求會(huì)轉(zhuǎn)到 timhbw.com。
  3. CNAME 域名:你在 CDN 廠商添加加速域名 cdn.timhbw.com,就會(huì)自動(dòng)分配一個(gè) CNAME 域名,比如七牛云是 xxx.qiniudns.com,騰訊云是:xxx.cdn.dnsv1.com,阿里云是:xxx.kunlun.com 類似這種。
  4. 動(dòng)態(tài)內(nèi)容:是指多次訪問(wèn)同一內(nèi)容,響應(yīng)返回的數(shù)據(jù)是不是相同的,比如API 接口、.jsp、.aps、.php等
  5. 靜態(tài)內(nèi)容:是指多次訪問(wèn)同一內(nèi)容,響應(yīng)返回的數(shù)據(jù)是相同的,比如圖片、html、js、css、apk、ipa等
  6. DNS:也就是域名解析服務(wù)。作用就是你輸入 timhbw.com 后,會(huì)自動(dòng)把域名轉(zhuǎn)換為網(wǎng)絡(luò)可以識(shí)別的 IP 地址,經(jīng)過(guò)一系列處理后,瀏覽器上就可以服務(wù)器返回的內(nèi)容。
  7. 邊緣節(jié)點(diǎn)(CDN 節(jié)點(diǎn)):也就是前面提到的 CDN 節(jié)點(diǎn)
  8. 命中率:用戶請(qǐng)求的時(shí)候,如果該節(jié)點(diǎn)已緩存訪問(wèn)的內(nèi)容,則直接返回給客戶,則是HIT(命中),如果 CDN 節(jié)點(diǎn)沒(méi)有該內(nèi)容緩存,就需要回到源站獲取,成為 MISS(未命中)。命中的請(qǐng)求數(shù)占總請(qǐng)求數(shù)的百分比就是命中率。
  9. 中間源:位于源站 和 邊緣節(jié)點(diǎn) 中間的一個(gè)回源服務(wù)器。中間源服務(wù)器可緩存多個(gè)邊緣節(jié)點(diǎn)的回源請(qǐng)求,對(duì)同一內(nèi)容的請(qǐng)求,中間源服務(wù)器只需進(jìn)行一次回源即可將內(nèi)容分發(fā)至各邊緣節(jié)點(diǎn),可以降低源站的壓力。
  10. 源站:就是實(shí)際的業(yè)務(wù)服務(wù)器,比如你的云主機(jī),或者各大廠商的對(duì)象存儲(chǔ)等
  11. 回源:當(dāng)用戶發(fā)起一個(gè)請(qǐng)求,邊緣節(jié)點(diǎn)發(fā)現(xiàn)沒(méi)有緩存該內(nèi)容,則會(huì)回到源站去請(qǐng)求該內(nèi)容。
  12. 冷資源:如前面所說(shuō),CDN 是利用緩存加速,會(huì)把資源存儲(chǔ)在 CDN 節(jié)點(diǎn),但是由于 CDN 節(jié)點(diǎn)的存儲(chǔ)容量有限,當(dāng)存儲(chǔ)容量不夠后,會(huì)按照“最近最少使用”原則,將最近訪問(wèn)的資源中訪問(wèn)頻率最低的資源從節(jié)點(diǎn)中清除。
  13. range 回源(分片緩存):一般用在點(diǎn)播和下載平臺(tái)等大文件分發(fā),將一份文件拆分成若干個(gè)小文件回源,減少回源消耗流量。比如一個(gè) 500MB 的文件,當(dāng)開(kāi)啟 range 回源后,客戶端發(fā)起的請(qǐng)求中含有 range,則源站收到 CDN 的請(qǐng)求中也帶有 range,客戶端請(qǐng)求多少數(shù)據(jù)就響應(yīng)多少數(shù)據(jù),對(duì)應(yīng)的 HTTP 狀態(tài)碼是 206,請(qǐng)求中斷后也不會(huì)再請(qǐng)求。當(dāng)沒(méi)有開(kāi)啟 range 回源的時(shí)候,客戶端發(fā)起的請(qǐng)求中含有 range,但是源站收到 CDN 的請(qǐng)求沒(méi)有帶 range,源站會(huì)返回完整的 500MB 的數(shù)據(jù),會(huì)導(dǎo)致回源放大問(wèn)題,就是 CDN只請(qǐng)求了 10MB 數(shù)據(jù),但是源站卻返回了 500MB 數(shù)據(jù)。
  14. 回源 HOST:回源 HOST 決定了 CDN 節(jié)點(diǎn)在回源站請(qǐng)求資源的時(shí)候,在源站訪問(wèn)的站點(diǎn)域名,也就是訪問(wèn)到該 IP 上的哪個(gè)站點(diǎn),也就是 nginx 配置中的 server_name。
  15. 回源協(xié)議(協(xié)議回源):比如客戶端使用 HTTPS方式請(qǐng)求資源,當(dāng) CDN 節(jié)點(diǎn)上沒(méi)有緩存該資源,就會(huì)以相同的 HTTPS 方式請(qǐng)求源站獲取內(nèi)容。同理如果是客戶端是 HTTP 請(qǐng)求,則 CDN 節(jié)點(diǎn)也以 HTTP 方式請(qǐng)求源站獲取內(nèi)容。
  16. 去參數(shù)回源(過(guò)濾參數(shù)):比如你使用兩種方式訪問(wèn)同一個(gè)資源:https://static.timhbw.com/logo.jpg?test、https://static.timhbw.com/logo.jpg?cdn,可以看到鏈接后面有?test,這個(gè)叫 query 參數(shù)
    1. 如果這個(gè)功能開(kāi)啟,則 CDN 節(jié)點(diǎn)會(huì)使用 https://static.timhbw.com/logo.jpg 向源站發(fā)起請(qǐng)求,然后緩存
    2. 如果這個(gè)功能關(guān)閉,則 CDN 節(jié)點(diǎn)會(huì)使用 https://static.timhbw.com/logo.jpg?test 、https://static.timhbw.com/logo.jpg?cdn 分別向源站發(fā)起請(qǐng)求,然后分別緩存。

原文鏈接:點(diǎn)我

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本想自己寫這個(gè)主題的文章,但網(wǎng)上已經(jīng)有人寫了一篇非常好的文章,覺(jué)得難以望其項(xiàng)背。就沒(méi)有必要再寫,直接轉(zhuǎn)載如下: 在...
    K丶Aionro閱讀 2,268評(píng)論 1 23
  • CDN概念基本介紹 一 . CDN簡(jiǎn)介 什么是CDN? CDN的全稱是Content Delivery Net...
    全能程序猿閱讀 54,088評(píng)論 12 74
  • 前面了解了緩存的定義以及常用緩存的使用姿勢(shì),你應(yīng)該對(duì)包括本地緩存、分布式緩存等緩存組件的適用場(chǎng)景和使用技巧有一定了...
    浥羽醉悠揚(yáng)閱讀 2,014評(píng)論 0 0
  • 一、什么是 CDN CDN的全稱是(Content Delivery Network),即內(nèi)容分發(fā)網(wǎng)絡(luò)。其目的是通...
    Kandy閱讀 47,998評(píng)論 5 28
  • 天麻自古就是一味良藥,很多中醫(yī)將天麻配入藥方中,主治或兼治某些頭痛或眩暈。在老百姓心目中,天麻也是大名鼎鼎,人見(jiàn)人...
    東潤(rùn)聊健康閱讀 597評(píng)論 0 2

友情鏈接更多精彩內(nèi)容