回源原理
- 什么是回源?
網(wǎng)上查了下資料,回源大致是指瀏覽器在發(fā)送請求報(bào)文時(shí),響應(yīng)該請求報(bào)文的是源站點(diǎn)的服務(wù)器,而不是各節(jié)點(diǎn)上的緩存服務(wù)器,那么這個(gè)過程相對于通過各節(jié)點(diǎn)上的緩存服務(wù)器來響應(yīng)的話就稱作為回源。回源的請求或流量太多的話,有可能會(huì)讓源站點(diǎn)的服務(wù)器承載著過大的訪問壓力,進(jìn)而影響服務(wù)的正常訪問。
- 如何計(jì)算回源比?
其實(shí)回源比和緩存的命中率正好相反,回源比高,說明緩存系統(tǒng)的緩存命中率低?;卦幢确譃榛卦凑埱髷?shù)比例和回源流量比例兩種。
回源請求數(shù)比例:收集所有邊緣節(jié)點(diǎn)上的請求記錄,沒有緩存或緩存過期的請求以及不可緩存的請求均被作為回源請求,發(fā)往源站點(diǎn)服務(wù)器響應(yīng)。其他的請求則由緩存系統(tǒng)直接使用緩存響應(yīng)。其計(jì)算公式為:回源請求數(shù)/(回源請求數(shù)+用戶發(fā)送的請求數(shù))。
回源流量比:即用戶所產(chǎn)生的流量當(dāng)中,有多少流量是直接有源站點(diǎn)服務(wù)器響應(yīng)的,其計(jì)算公式為:回源流量/(回源流量+用戶請求訪問的流量)
CDN緩存
CDN,即Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò),其搭建的思路是盡可能避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),盡量使內(nèi)容傳輸?shù)母旄€(wěn)定。CDN通過在網(wǎng)絡(luò)邊緣部署邊緣服務(wù)器,依靠CDN中心平臺的負(fù)載均衡、內(nèi)容分發(fā)及調(diào)度等功能,使用戶就近獲取所需的內(nèi)容,降低網(wǎng)絡(luò)擁堵,提高用戶訪問響應(yīng)速度和命中率。所以基本上CDN就是廣泛采用各種緩存服務(wù)器,使得用戶的請求直接由這些緩存服務(wù)器響應(yīng),加快了響應(yīng)速度;只有在用戶請求的資源在緩存服務(wù)器上沒有找到或者請求訪問的資源在源站點(diǎn)服務(wù)器上已經(jīng)修改過的情況下,緩存服務(wù)器才會(huì)去訪問源站點(diǎn)服務(wù)器以獲取最新的資源。
下圖為常見的CDN架構(gòu):

在CDN環(huán)境下,web訪問數(shù)據(jù)通常會(huì)經(jīng)歷客戶端本地緩存和CDN邊緣節(jié)點(diǎn)緩存兩個(gè)階段。如果這兩個(gè)階段均無法響應(yīng)客戶的請求的話,那么最后會(huì)由CDN節(jié)點(diǎn)向源站點(diǎn)發(fā)起回源請求,進(jìn)而從源站點(diǎn)獲取最新的數(shù)據(jù),更新CDN節(jié)點(diǎn)的本地緩存,最后將最新的數(shù)據(jù)返回給客戶端。
CDN節(jié)點(diǎn)的緩存機(jī)制也是遵循h(huán)ttp協(xié)議,因此也會(huì)受到Cache-Control等字段的影響。與此同時(shí),CDN上的緩存時(shí)間的長短會(huì)對回源率產(chǎn)生直接的影響。若CDN緩存時(shí)間較短,CDN邊緣節(jié)點(diǎn)上的數(shù)據(jù)會(huì)經(jīng)常失效,導(dǎo)致頻繁回源,增加了源站的負(fù)載,同時(shí)也增大的訪問延時(shí);若CDN緩存時(shí)間太長,會(huì)帶來數(shù)據(jù)更新時(shí)間慢的問題。因此開發(fā)者需要增對特定的業(yè)務(wù),來做特定的數(shù)據(jù)緩存時(shí)間管理。