如何在雲開發中優雅地管控 CDN 流量?

在微信開放社區中,有很多使用雲開發的小夥伴反饋遇到了「CDN流量消耗如流水」的狀況。小程序

有一覺醒來超額的:後端

有被高質量圖片的加載「嚇」到不敢用的:微信小程序

遇到以上狀況不要慌,極可能是你的使用姿式不對!瀏覽器

那麼問題來了,如何在雲開發中優雅地管控 CDN 流量消耗呢?本文就來和你詳細聊聊!緩存

按量付費和管道付費

爲了便於理解,先來看看雲開發的流量計費模式。服務器

簡單來講,按量計費就是:你有多少個量跑出去了,就給你算多少許;可是它並不限制你同一時間跑出去的量,也就是流量峯值不設限。微信

若是你在同一時間須要跑出去100M的量,那麼峯值就給你開到100M,在同一時間跑完,最後算費用是100M的錢。網絡

管道付費則是限制給你開多寬的「道路」,按照這個「道路」的寬窄收費,好比你選擇1M的網絡道路,那就按照1M的價格來收錢;在使用時,你的量只能達到1M的速度,再也高不了了,這個最大速度就被稱作帶寬。框架

可是即便低峯沒多少許時,你還必須爲這個「道路」付錢。仍是上述例子,你同一時間須要跑出去100M,可是速度只能給你開到1M,那麼這些量在100秒後才能夠走完,最後算費用是1M的道路租金*租用時長。less

而在現實項目中,總會有業務的高峯和低峯,流量幾乎不可能始終保持在一個恆定的速率,這就會形成管道計費有速度的天花板、但閒置時仍在計費的資源浪費問題。

雲開發做爲 Serverless 雲原生一體化後端服務,提供的流量是按量計費的,不限制同一時刻的流量速度,所以,若是開發者使用不合理就會致使流速過快,進而形成「一眨眼的功夫,流量就超額了」的狀況。

瞭解了按量付費和管道付費的區別後,我們進入正題,說說 CDN。

什麼是CDN流量?

咱們在使用雲開發時,幾乎在各處都會看到CDN這個詞。

CDN又稱內容分發網絡,通俗來說就是將你主存儲(源站)中的文件,複製給各地的存儲點(CDN節點),當有用戶訪問這個資源時,直接從就近的存儲點(CDN節點)獲取便可。

雲開發的雲存儲和靜態網站託管自然支持 CDN 加速,因此你的用戶經過客戶端下載文件跑的流量都是 CDN 流量。

以上 CDN 流量只適用於各類渠道走加速公網下載文件的狀況,好比瀏覽器加載網站,客戶端下載資源,外部系統請求文件,經過臨時地址的各類訪問打開文件都在消耗 CDN 流量。

可是若是是內網訪問文件,則不走 CDN 流量消耗,好比在雲函數中經過 fileID 訪問文件等。

什麼是CDN回源流量?

當咱們的存儲中有文件更新時,存儲在 CDN 節點的舊文件又該如何處理呢?在這裏引入一個知識點——緩存時間

這裏的緩存時間其實就是文件副本在各地存儲點(CDN節點)的有效時間,好比默認是兩小時,那麼每次文件副本在各地存儲點的有效時間就是兩小時,超過這個時間以後再收到請求時,存儲點(CDN節點)就會丟棄過時的舊文件,向主存儲(源站)請求最新的文件,而這一請求所產生的流量就稱爲 CDN 回源流量。

緩存時間既不能太長也不可過短,若是 CDN 緩存間隔時間太短,那麼 CDN 節點上的數據會常常失效,致使頻繁回源,增長了源站的負載,進而影響了總體的傳輸效率;若是緩存間隔時間過長,會帶來數據更新不及時等嚴重的業務問題。

雲開發的雲存儲就提供了很是細微顆粒度的緩存時間設置,你能夠針對一個文件、一個路徑甚至是文件後綴來進行分別設置。

另外,多個緩存規則設置中還有優先級策略,調配變得更加靈活。

雲存儲是以從後到前的配置模式來作策略計算的,好比一個雲存儲的域名作了以下緩存配置:

如今請求此路徑下資源/test/abc.jpg,其從後到前匹配方式以下:

匹配第一條全部文件,命中,此時緩存時間爲 2 分鐘。

匹配第二條,未命中。

匹配第三條,命中,此時緩存時間爲300秒。

匹配第四條,命中,此時緩存時間爲400秒。

匹配第五條,命中,此時緩存時間爲200秒。

如何合理管控CDN?

咱們須要把握一個原則:

縮減大小,善用緩存

縮減大小的意思就是,咱們在開發應用時,所須要的多媒體文件,若是沒有特殊要求(好比攝像館的原圖發送),須要儘量的壓縮。只有減輕了業務資源的大小,纔可以根本的減小流量資源的消耗。

另外,用戶在上傳多媒體資源時,仍然可使用平臺或框架能力對資源進行壓縮後再上傳,保證資源都是通過優化後進入存儲,這樣在請求下載時就會減輕不少負擔。

善用緩存意思就是同一個用戶、同一份資源儘量不要請求一次以上,要合理使用客戶端的本地緩存能力,將固定資源所有緩存。當用戶再此進入時,直接使用緩存的資源。

例如,微信小程序官方就提供了圖片緩存配置,開啓後全部圖片均進行緩存,下次讀取相同資源時,直接從緩存中讀取。

文檔連接:http://mrw.so/6wT3TR

再送給你們一句網絡金句:緩存用的好,PV 的效果用的只是 UV 的量。

而在具體使用時,你們仍是須要根據本身的業務狀況來合理把握。好比你的資源變動很是頻繁,就不太適合緩存優化;而你的資源不能壓縮,要保持原大小,則就不適合壓縮優化。

結語

以上攻略送給各位 hold 不住 CDN 流量的小夥伴們,若是你們以爲 CDN 消耗如流水,用戶活躍卻沒有多少轉機,可能就須要好好檢查一下本身哪裏浪費了。勤儉節約但是中華民族的傳統美德,雲開發雖好,也須要節約使用哦~

小程序·雲開發「錯誤監控」功能有獎調研

誠邀各位雲開發者參與小程序·雲開發「錯誤監控」功能有獎調研,參與即送小禮品。

期待您的寶貴建議,快掃描下圖中的二維碼參與吧!

產品介紹

雲開發(Tencent CloudBase,TCB)是騰訊雲提供的雲原生一體化開發環境和工具平臺,爲開發者提供高可用、自動彈性擴縮的後端雲服務,包含計算、存儲、託管等serverless化能力,可用於雲端一體化開發多種端應用(小程序,公衆號,Web 應用,Flutter 客戶端等),幫助開發者統一構建和管理後端服務和雲資源,避免了應用開發過程當中繁瑣的服務器搭建及運維,開發者能夠專一於業務邏輯的實現,開發門檻更低,效率更高。

相關文章
相關標籤/搜索