--- title: Cloud CDN # 簡報的名稱 tags: GCP # 簡報的標籤 --- # Cloud CDN --- # Agenda * 何謂 CDN * 介紹 Cloud CDN * 快取模式 * 快取命中率 * 實作 Cloud CDN * 計價方式 --- ## 何謂CDN --- ### CDN概述 * Content Delivery Network ( 內容傳遞網路 ) * 一種在網路上傳輸的內容快取機制 * 讓網站內容能夠更順暢、快速的傳遞 --- ### 運作方式 CDN服務供應商利用分散式架構,在全球多個不同地點建立伺服器節點,將網站內容分散至各個節點,讓用戶能就近取得網頁內容。 --- ![](https://i.imgur.com/5inajd5.png) --- 根據即時的網路流量、距離、負載能力去重新導向請求訊息,解決網路壅擠的狀況,提升訪問網站時的響應速度。 --- ### CDN優點 * 縮短存取時間 * 有效分流 * 減緩DDoS攻擊 * 降低服務成本 * 增加網站穩定度 --- ## Cloud CDN --- Google的Cloud CDN具有分布全球的 PoP點 。 PoP點(points of presence):為經由 Google 全球光纖骨幹 (fiber backbone) 上的重要網路節點,具有良好的反應及超低延遲的效果。 --- 目前累積經全球 33 國、100 個 PoP 點。 東亞,台灣、東京、香港、新加坡都有。 ![](https://i.imgur.com/pqYdfgy.png) --- Cloud CDN 使用HTTP(S)負載平衡作為可快取內容的來源。 ![](https://i.imgur.com/5aGvLtJ.png) --- ## 快取模式 --- ### 快取模式分為三種 * 快取靜態內容 * 基於 Cache-Control 表頭的來源設定 * 強制快取所有內容 --- #### Cache-Control * HTTP/1.1後出現的表頭指令 * 設定內容為公開或私有 `Cache-Control : public (private)` * 設定快取存留期限(秒為單位) `Cache-Control : public , max-age=3600` > Nginx的Cache-Control可從nginx設定檔的location{}模組中進行設定 路徑 : /etc/nginx/nginx.conf [color=#3b75c6] --- ### 快取靜態內容 * 即使由不同用戶訪問也始終相同的內容 * CSS、JavaScript 和字型等網頁素材資源、音訊和視訊格式,或 PDF 內容 (依Content-Type判斷) * Cache-Control為private、no-store或no-cache,則不被快取 --- ### 使用基於Cache-Control表頭的來源設定 * Cloud CDN只對表頭中含有有效快取指令的來源進行回應 * 「Cache-Control: public」才會快取 --- ### 強制快取所有內容 快取來源提供的所有內容,忽略任何private、no-store或no-cache指令。 > :bulb:此模式可能導致Cloud CDN快取個別使用者的私人內容 [color=#3b75c6] --- ## 快取命中率 --- ### 快取命中 當Cloud CDN中查找到響應用戶請求的快取,並將快取內容發送給用戶,稱為快取命中。 當發生快取命中時,縮短了往返時間,並節省來源服務器處理請求的時間。 --- ### 快取未命中 前端第一次請求一條內容時,無法從快取滿足請求的內容,此為快取未命中。 快取未命中時,如果附近的快取中有內容,則從附近的快取進行填充。否則,請求會被轉發到負載平衡器進行填充。 --- ### 快取出口和快取填充 ![](https://i.imgur.com/xKrYeXm.png) --- ### 快取命中率 快取命中率 : 從 Cloud CDN 快取放送的回應百分比 ![](https://i.imgur.com/wqDoFtc.png) --- ### Cache Key * Cloud CDN預設使用完整的請求URL來構建Cache Key * 類似的url無法共用快取項目 ![](https://i.imgur.com/dR1J2Pa.png) --- * 為優化快取命中率,可選擇自定義Cache Key ![](https://i.imgur.com/BfSwWtZ.png) --- ## 實作 Cloud CDN --- ### 設置條件 * 確認目前已有 HTTP(S) 負載平衡器,或建立新的 HTTP(S) 負載平衡器。 * 建立包含 Google Cloud Storage 值區、執行個體群組,或網路端點群組的後端。 --- ### 操作步驟 #### Step.1 建立後端服務內容 這邊示範建立一個內容為`test cdn`的網頁 ![](https://i.imgur.com/YJ97UM2.png) --- #### Step.2 建立http負載平衡器 ![](https://i.imgur.com/26wNDj7.png) --- #### Step.3 啟用CDN 在負載平衡器後端設定中,勾選啟用CDN ![](https://i.imgur.com/5p5h514.png) --- #### Step.4 驗證 將網頁內容改為`cache clear`,清除快取前仍會顯示舊的`test cdn`內容,表示成功取到CDN的快取內容 ! ![](https://i.imgur.com/8Gwlqjb.png) --- 清除快取 (大約需要5~10分鐘) ![](https://i.imgur.com/TKWQ6Jx.png) --- 清除快取後則成功顯示更改後的`cache clear`內容!:tada: ![](https://i.imgur.com/b9EiTXK.png) --- ## 計價方式 --- ### 支付項目 Cloud CDN 提供內容時,您必須支付頻寬和 HTTP/HTTPS 要求的費用。 * 快取命中時,您必須支付快取輸出頻寬的費用。 * 快取失敗時,您則須額外支付快取填補頻寬費用。 * 如果您撤銷任何快取,也必須支付相關費用。 --- ### 實際價格 ![](https://i.imgur.com/suPIA6J.png) [[詳細資訊]](https://cloud.google.com/cdn/pricing?hl=zh-tw#cache-egress) & [[價格試算]](https://cloud.google.com/products/calculator?hl=zh-tw#tab=cloud-cdn)