阿里雲CDN從域名添加到緩存設置優化全圖文教程
不少在看了介紹的阿里雲輕量雲伺服器【阿里雲香港輕量雲伺服器性能網路2022最新評測】後,都進行了嘗試,效果都還可以,但是對於一些優化操作步驟就犯難了,比如如果設置CDN優化加速,這裡就分享一下阿里雲官方的教程,從域名添加到緩存優化設置加速的圖文教程。
阿里雲CDN活動地址:https://www.aliyun.com/product/cdn
文章目錄
準備工作
- 開通CDN服務,您需要註冊阿里雲賬號並完成賬號實名認證,登錄阿里雲CDN平台後選擇立即開通產品。
- 已有可在公網上通過HTTP(s)協議訪問的源站(OSS/ECS等)。
配置接入
配置CDN過程有三大必要配置:基礎信息、業務信息、源站信息,我們將會把配置過程分為兩大部分。
基礎信息及業務信息配置
為了幫助您更好的理解CDN配置項的功能和含義,在正式配置前,我們建議您跟隨小問卷的形式對您的現有業務形態進行分析,使得最終配置能夠貼近您的業務場景:
- 您希望在CDN加速前後,資源的訪問域名是否發生變化?
- 變化,CDN加速後用另一個域名訪問。(創建域名後需關注文章「其他常用配置」中的回源HOST功能)
- 不變,原有域名業務全部遷移到CDN上。
- 您希望加速的業務場景是什麼樣的?
- 多種資源共存的門戶網站、企業官網、個人博客等
- 點播視頻播放
- 安裝包/大文件下載
- 您的源站內容是動靜態業務獨立部署的嗎?(動態請求例如進行登錄、評論、提交訂單等操作,靜態請求例如獲取圖片、視頻、文檔等操作)
- 是的,動靜態請求使用了不同站點域名接入
- 不是,動靜態請求使用了相同站點域名接入
小提示:選擇B時,推薦加速場景使用全站加速DCDN。
- 您的域名是否已經進行工信部備案?
- 是的,已完成工信部備案。
- 不是,尚未備案 或 源站在海外無法備案。
小提示:未備案域名無法為中國內地用戶提供CDN加速服務,後續配置時加速區域只能選擇全球(不包含中國內地)。
- 您希望享受加速效果的用戶主要分布在哪裡?
- 中國內地,只需要對這部分用戶保障加速效果即可,不需要海外加速節點。
- 全球(不包含中國內地),只需要對中國內地以外的用戶保障加速效果即可。
- 全球,用戶在各地均有分布。
在完成第一階段的小問卷後,您可以帶著對上述小問卷中的匹配結果來完成CDN控制台添加域名頁面的各個配置項,我們將為您繼續解讀其含義和建議配置值,您可以根據自身情況完成下列配置 。
- 加速域名:如果您希望CDN加速前後訪問域名不變,加速域名中填寫您需要加速的業務域名(例如 video.aliyun.com)即可。如果加速時需要使用其他域名,您也可以自行定義域名添加(例如cdn.aliyun.com)
- 業務類型:選擇和您業務匹配度最高的一項即可。
- 如果您的業務中動靜態業務未分離部署,推薦使用全站加速。
- 不同配置項在各個場景上有一定優化,但CDN並不限制加速文件類型。如果您的域名中含多類型文件類型時,選擇最貼近的即可。
- 加速區域:選擇需要使用的CDN加速節點覆蓋範圍。
- 選擇僅中國內地或全球時,您的加速域名需要在工信部完成備案。
- 加速區域僅影響您的加速節點覆蓋範圍,區域無加速節點覆蓋時,將會解析到加速區域內的節點。例如域名加速節點不含中國內地時,中國內地用戶訪問默認將通過海外節點進行接入。
- 資源分組:選擇默認分組即可。如果您需要根據業務部門、項目等維度進行雲資源的分組管理,您也可以通過創建資源組來實現。
另外,為了確保域名只被真正的擁有者添加,首次在CDN控制台添加一個新域名時,需要完成域名歸屬權驗證,驗證通過後您再次添加該域名或子域名時,無需再次驗證。如果之前已經驗證通過根域名的歸屬權,請忽略。
源站信息配置
在完成基礎信息和業務信息的填寫後,進入到的源站信息配置。源站信息將決定CDN首次訪問資源時,如何回源以及回到哪裡去獲取資源,配置錯誤可能會導致您的域名出現無法訪問到的情況,因此我們仍然建議先對您的業務特徵進行分析:
- 您需要加速的源站是雲存儲嗎?
- 是的,OSS存儲。(問卷結束,無需完成後續作答,如為私有OSS空間,創建域名後需關注文章「其他常用配置」中 阿里雲OSS私有Bucket回源 功能)
- 是的,其他廠商的雲存儲服務。(問卷結束,無需完成後續作答,創建域名後需關注文章「其他常用配置」中 回源HOST 功能)
- 不是。
- 您需要加速的源站是阿里雲-函數計算嗎?
- 是的。(問卷結束,無需完成後續作答)
- 不是,是ECS/其他雲廠商的雲伺服器/物理伺服器等
- 您希望CDN直接回源您的源站嗎?
- 是的,CDN直接回源伺服器即可
- 不是,需要通過WAF等雲服務接入、轉發
- 您希望CDN從您源站獲取資源時,使用http協議還是https協議呢?
- 都可以,不限制。
- 全部用https協議,安全性更高。(創建域名後需關注文章「其他常用配置」中 回源SNI 功能)
- 您的源站http訪問時,會強制跳轉為https協議嗎?
- 是的,會通過3xx重定向跳轉為https協議訪問。
- 沒有該策略。
小提示:選擇A時,後續配置時使用https協議回源
- 您源站的web服務部署的是默認埠嗎?
- 是的,部署在80/443埠。
- 不是,web服務部署在特殊埠上。
小提示:選擇B時,後續配置需要注意回源埠和回源協議的配置。
- 您希望多站點回源,還是單站點回源即可?
- 單站點回源,我只有一個源站。
- 多站點回源,需要主備/輪詢回源。
小提示:多站點時,需要添加多源站,並配置優先順序、權重。
- 源站信息:
- 如果您的源站是OSS或函數計算,您可以選擇並填寫OSS源站域名(列表搜索存儲空間名/選擇自定義域名)或函數計算域名
- 如果您的源站是動態IP接入,例如是其他廠商的雲存儲服務或WAF等需要通過域名回源的場景,您可以選擇並填寫源站域名。
- 如果您的源站是ECS或其他廠商的雲伺服器,優先推薦使用IP源站回源。
- 優先順序:
- 單個源站時無需修改。
- 該功能支持在多源站場景時進行主備回源,僅在主源站故障時切換,因內容不存在出現404時不會輪詢,因此建議保持多源站之間內容一致性。
- 權重:
- 單個源站時無需修改。
- 該功能支持在多源站場景時根據權重分配回源比例,數值越大,源站分配到的用戶請求比例越高。您可以根據業務需求,自行設置許可權值,同時建議保持多源站之間內容一致性。
- 埠:
- 源站未部署在特殊埠:填寫80(HTTP協議回源)或443(HTTPS協議回源)即可,如果業務對回源內容安全性有要求,或者您的源站配置了在收到HTTP請求時自動重定向到HTTPS功能,回源建議使用443埠。
- 源站部署在特殊埠:填寫服務部署的對應埠即可,默認使用HTTP協議回源。如果需要HTTPS協議回源特殊埠,您可以提交工單申請後台配置。
其他常用配置
完成上述三大配置項之後,您可以進行創建域名,除了上述常見配置外,還有幾項回源相關的配置項需要關注,您可以在域名創建後,根據業務需求在域名管理-配置-回源配置中修改:
- 回源HOST:訪問源站時,指定HTTP請求中攜帶的HOST頭部,決定了訪問源站伺服器上的哪一個站點。默認情況下,回源HOST將與您的加速域名保持一致。
- 回源阿里雲OSS時,會自動添加回源HOST為存儲域名,如果您為其他雲廠商的OSS服務加速,需要手動配置回源HOST為對應的源站域名。
- 回源WAF時,無需配置此項,CDN和WA共同使用時一般為CNAME接入模式,訪問HOST使用默認的加速域名即可。
- CDN加速域名和源站配置的ServerName不同時,需要手動配置回源HOST為源站內容對應的ServerName。
- 回源SNI:回源使用了443埠(HTTPS協議回源),且源站部署了多個安全站點,建議手動配置回源SNI和回源HOST保持一致(手動配置為加速域名 或 自定義的ServerName)。
- 阿里雲OSS私有Bucket回源:當您的源站為阿里雲OSS私有存儲空間時,默認每次回源請求需要攜帶鑒權參數,開啟該配置後,CDN回源OSS時會自動簽算鑒權憑證。
- 開啟該功能後,通過CDN訪問OSS資源時,默認無需攜帶鑒權參數即可訪問,如有安全防護需求,推薦您可以通過CDN上的其他安全策略進行訪問控制。
- 訪問URL的query中含有OSS鑒權參數時,會導致同資源的參數值不相同,默認無法共享同一資源的緩存並利用其加速,因此,推薦您通過CDN的鑒權控制進行安全管控,請求時僅攜帶CDN鑒權參數即可。
至此,CDN域名的創建和源站配置就已經基本完成,配置完成後,域名尚未真正接入CDN服務,我們仍需要將域名解析到特定的CNAME記錄上,才能使得請求時通過CDN的調度系統訪問到周邊加速節點。
阿里雲CDN活動地址:https://www.aliyun.com/product/cdn
使用CDN加速靜態資源時,CDN會將源站上的資源緩存到距離客戶端最近的CDN節點上。當您訪問該靜態資源時,可直接從CDN的緩存節點上獲取,有效避免通過較長的鏈路回源,提高資源訪問效率。在本章節中,我們共同學習如何通過合理配置CDN緩存功能來提升業務緩存的利用率,實現終端用戶訪問體驗的提升。
CDN配置優化準備工作
1.已經添加完成的CDN域名
2.阿里雲CDN控制台。
CDN緩存配置及工作機制
在正式開始配置之前,我們需要先了解緩存的形式和原理機制。
默認Cachekey
Cachekey是一個文件在CDN節點上緩存時唯一的身份ID,每個在CDN節點上緩存的文件都對應一個Cachekey。文件的Cachekey默認為客戶端請求的URL(帶參數)。
即 默認情況下,緩存內容的索引名(Cachekey)受到 域名、路徑、參數 三大因素共同影響。我們可以理解為,對於同一個邊緣節點,請求信息中三者完全一致的情況下將使用同一份緩存內容,三者中有任一因素變化則無法使用同一份緩存。
當我們的訪問鏈接中路徑變更或參數變更時,均會生成獨立緩存。
為了提升緩存效率,我們需要對業務思考以下四個問題:
1.業務訪問時,訪問URL中是否攜帶參數(可以分析源站nginx訪問日誌或業務代碼的實現邏輯),這些參數的作用是什麼,攜帶參數不同是否會影響文件響應的內容(或 參數是否會影響源站處理行為)?
如果您的URL中攜帶變化的參數,默認會影響緩存命中率和加速效果,推薦關注下文「緩存優化-忽略參數緩存」部分內容。
2.業務文件內容更新時,文件的路徑(目錄/文件名)是否會發生變化?
如果您的文件內容以同名文件覆蓋的形式進行更新,推薦關注【緩存時間配置】中的配置引導,針對內容頻繁更新的資源降低緩存時間。
3.您的業務中大文件緩存(平均大於20M)是否較多?
如果您的業務中大文件較多,提升緩存及回源效率推薦開啟range分片功能,推薦關注下文「緩存優化-range回源」部分內容。
4.您的業務中是否需求針對完全相同的訪問URL區分不同的緩存?
即同一個uri對應的資源有多個版本,例如同一個頁面的不同壓縮格式,一個圖片的不同尺寸(甚至也可能是完全不同的內容),服務端通過收到的請求的uri以及一些決定版本的頭部信息來確定應該給客戶端返回哪個版本,推薦關注下文「緩存優化-多副本及自定義緩存」。
訪問URL的格式和場景和緩存利用效率息息相關,在下文的內容中,我們可以通過忽略參數緩存、cachekey改寫等功能,對域名的緩存索引方式進行調整,以適配您的業務場景。
小提示:在CDN使用場景中,推薦您的源站更新資源時,考慮以不同的文件名作為新舊版本區分,例如img-v1.0.jpg、img-v2.1.jpg的方式命名,以實現便捷區分新舊緩存的效果。
緩存更新機制
CDN緩存更新主要有兩種方式:
1.超出緩存的過期時間
當CDN節點上的緩存失效後,緩存不會立即被清理,在源站返回last-modified/etag頭部情況下,CDN將會回源發起緩存有效性校驗(即協商緩存)。
可以通俗地理解為,CDN將之前緩存文件的標識信息帶回源站詢問是否發生變化。
- 如源站內容未發生變化,源站將返回304狀態碼,CDN節點僅更新緩存的有效周期,不變更緩存內容,截止下次緩存時間到期前不會再次回源;
- 如源站內容發生變化,源站將返回200狀態碼和更新後的內容,CDN節點將更新緩存的有效周期並覆蓋緩存內容,實現文件更新的效果。
2.主動更新
當CDN節點上的緩存未失效,但源站內容已經發生變化,業務上需要立即更新CDN上資源的緩存時,需要使用CDN的緩存刷新功能,您需要通過 CDN控制台-刷新預熱 或者 API介面 下發緩存的刷新任務,詳細操作和說明將在下章節為您介紹。
緩存時間配置
在緩存管理中,可以方便地指定目錄和文件後綴名在CDN節點上的緩存時間,緩存時長配置的長短,取決於源站對該文件的變更頻率。我們需要分析下業務中以下幾個問題:
1.您的域名下有哪些類型的資源內容?
例如,該加速域名下有html/js/css/mp4/apk等文件類型的內容。
2.您源站這些不同目錄、不同類型的資源內容在什麼情況下內容會變化,變化的頻率如何?
例如,mp4文件的內容一般不會變化,而html是新聞門戶的主頁,其展示頁面中的文本內容平均1小時更新一次。
3.您源站這些文件在變化時,文件名是否也會跟隨變化?
例如,文件在更新內容時都會使用新的文件名,或 文件更新後仍然使用之前的文件名。
小提示:在下文的內容中,我們將根據此處的分析結果進行緩存時間的配置。
CDN緩存時間主要受兩個部分控制:
1.源站返回的標準HTTP緩存控制頭部(cache-control)。
2.您在控制台上配置的緩存時間。
配置緩存時,我們需要登錄CDN控制台。在域名管理中單擊目標域名,選擇緩存配置。
在緩存過期時間頁簽下,單擊添加即可配置緩存規則。
- 目錄為某一路徑下所有資源設置相同緩存規則;文件後綴名:為某一文件類型資源的設置相同緩存規則。
- 權重即緩存規則的優先順序。取值為1~99,數值越大優先順序越高,對應規則優先生效。
類型 | 項目 | 地址/後綴名取值 |
對域名下所有文件配置默認緩存時間 | 目錄 | / |
對域名下/video目錄配置緩存時間 | 目錄 | /video |
對/home/index.html特定文件設置緩存 | 目錄 | /home/index.html |
對域名下js,css類型文件配置緩存時間 | 文件後綴名 | js,css |
結合上文中的業務分析,推薦您根據業務情況在CDN域名上配置緩存時間。
如果沒有明確業務更新周期,可緩存資源推薦配置一個月以上的緩存時間,如果源站的資源發生變更,您可以通過CDN的刷新緩存功能清理節點上的緩存(下章節中會詳細說明)。
需要注意的是,如您的業務中有動態請求(如表單提交/登錄/評論/上傳等交互),需要設置對應路徑或文件類型的緩存時間為0。如果您需要對動態請求也進行加速,優先推薦您使用全站加速(DCDN)產品。
補充說明:參考CDN產品文檔,CDN節點上的緩存生效優先順序如下
1.源站響應pragma:no-cache、cache-control:no-cache(或者no-store,或者max-age=0)時,不緩存。
2.CDN控制台設置的緩存過期時間或者狀態碼過期時間。
3.源站配置其他緩存規則,優先順序由高至低為:cache-control>expires>last-modified>etag。
4.源站返回的數據中ETag、last-modified、cache-control和expires這些緩存相關的響應頭都沒有攜帶,則默認不緩存。
緩存命中判斷
正確配置緩存後,您可以通過訪問資源URL時,通過CDN響應頭中的X-Cache信息判斷是否命中緩存,首次訪問時可能會顯示MISS,可以通過刷新頁面或重試請求檢查下次請求是否命中。
下圖為通過chrome開發者工具抓包的結果,您也可以通過curl進行測試。
X-cache:HIT(命中)/MISS(未命中),此處僅代表邊緣節點的命中情況,不代表其父層節點的命中情況。
X-Swift-SaveTime:緩存在節點上保存的時間,零時區(北京時間+8H)。
緩存優化
緩存優化部分致力於幫助您的業務緩存得到合理的利用,此處主要介紹三個常用功能。
- 忽略參數緩存(常用)
CDN緩存時忽略全部或部分URL中的參數內容,提高緩存利用率,針對URL中攜帶隨機變化參數但不影響緩存內容的場景,推薦開啟。
- range請求(常用)
針對業務中平均文件大小超過20M,在源站允許range的情況下,開啟該功能允許CDN分片進行回源,不僅能夠降低回源帶寬,也可以提升緩存效率,大文件場景下推薦開啟。
- 多副本及自定義緩存(特殊場景使用)
業務中僅用URL無法完全區分響應內容,需要結合請求中其他信息,對同URL進行多個副本的緩存,或者需要自定義緩存邏輯。
阿里雲CDN活動地址:https://www.aliyun.com/product/cdn
忽略參數緩存(常用)
上文中我們提到過,如果您的業務URL中攜帶變化的參數,默認會影響緩存命中率和加速效果,這些不同的參數無法復用同一份緩存的內容。
如下圖所示,儘管四個訪問URL的內容都是同域名下的test.jpg,響應的資源內容也完全一致,但由於攜帶的參數不同,導致對應的緩存索引也不同,最終無法使用同一份緩存內容,分別獨立回源,如何改善這種情況呢?
針對time這種對業務內容和邏輯無影響的參數,我們希望上面兩種訪問URL使用同一份緩存內容,那麼需要保證他們的緩存索引一致,實現如下圖的效果,也就是在生成CDN緩存索引時,忽略 time 參數。
配置方式:
1.CDN控制台-域名管理-管理-性能優化中的忽略參數,配置入口如下圖所示。
2.點擊修改配置後,配置頁面如圖,我們列舉了幾種常見場景方便您的理解,可以參考場景示例進行配置。
場景 | 過濾模式 | 過濾參數 | 過濾參數 | 保留回源參數 |
CDN忽略所有參數緩存,但回源站時需要攜帶參數,例如源站有鑒權。 | 保留指定參數 | 是 | 不填寫 | 是 |
CDN忽略所有參數緩存,也無需攜帶參數回源。 | 保留指定參數 | 是 | 不填寫 | 否 |
CDN保留version參數緩存,且只攜帶version參數回源。 | 保留指定參數 | 是 | version | 否 |
CDN僅保留key1和key2參數緩存,但需要攜帶所有參數回源。 | 保留指定參數 | 是 | key1,key2 | 是 |
場景 | 過濾模式 | 刪除指定參數 | 保留回源參數 |
僅刪除timestamp參數緩存,保留其他參數緩存,回源無需攜帶timestamp | 刪除指定參數 | timestamp | 否 |
僅刪除token參數緩存,保留其他參數緩存,回源時必須攜帶token | 刪除指定參數 | token | 是 |
小提示:如果基礎的忽略參數緩存無法滿足您對緩存索引的需求,也可以了解緩存配置中的 自定義Cachekey 功能。
range回源(常用)
Range回源,指CDN節點在回源的HTTP請求裡面攜帶了Range信息,源站在收到CDN節點的回源請求時,根據HTTP請求頭中的Range信息返回指定範圍的內容數據給CDN節點。Range回源可有效提高文件分發效率,可以提高緩存命中率,減少回源流量消耗和源站壓力,並且提升資源響應速度。
需要特別注意:
1.開啟Range回源前需確認源站是否支持Range請求,即HTTP請求頭中包含Range欄位,並且源站能夠響應正確的206文件分片。如果源站不支持Range請求,開啟Range回源將導致資源無法緩存。
2.如果源站是OSS(默認支持range),開啟range功能後,推薦您額外在CDN控制台配置 增加回源HTTP請求頭 x-oss-range-behavior:standard ,可兼容HTTP Range範圍超出有效區間時OSS的行為。
配置方式:
1.CDN控制台-域名管理-管理-視頻相關中的range回源,配置入口如下圖所示。
2.選擇開啟或強制Range回源
小提示:開啟和強制的區別在於
- 開啟:僅在當客戶端使用Range請求CDN節點時,CDN節點才會採用Range請求回源
- 強制:無論客戶端是否使用Range請求CDN節點,CDN節點都會採用Range請求回源(推薦)
多副本及自定義緩存(特殊場景使用)
在業務上需要對單URL進行多副本緩存時,主要實現方式主要有兩種,如果您需要複雜的自定義緩存,推薦使用第一種:
1.CDN控制台-域名管理-管理-緩存配置中的 自定義cachekey 功能(推薦)
2.源站返回vary頭控制CDN緩存行為
注意:多副本緩存推薦在默認緩存行為或忽略參數緩存功能無法滿足業務需求時使用,對同URL的過多副本不利於緩存命中率,可能會產生較多回源浪費,配置時您需要合理評估參數的獨立緩存必要性。
自定義cachekey
當我們想根據業務情況,結合path、參數、header等信息自定義cachekey的生成方式時,可以使用該功能。
我們列舉基礎場景幫助您的理解:
>場景1:對請求路徑改寫cachekey
http://aliyundoc.com/a/b/image.jpg
http://aliyundoc.com/a/b/c/image.jpg
如果我們希望將上述2個URL視為請求同一個文件,使用同一份緩存內容,因此生成cachekey時 需要忽略 /a/b ,即該文件的Cachekey為http://aliyundoc.com/c/image.jpg,配置方式如下圖所示。
>場景2:將 HTTP Header 拼接到cachekey中
如果我們希望客戶端請求的HTTP HEADER的User-Agent和Accept-Language的值將被拼接到Cachekey中。
例如,請求http://aliyundoc.com/a/b/image.jpg中的部分請求頭為:
User-Agent=Mozilla/5.0 (Linux; X11)
Accept-Language=en
則期望該請求的Cachekey為:http://aliyundoc.com/a/b/image.jpgMozilla/5.0(Linux;X11)en
除了上述兩種基礎場景外,您也可以根據業務需求探索配置,在自定義變數中支持正則匹配生成變數,可以滿足更複雜的業務需求,詳情可參考產品文檔說明。
vary頭
Vary 是一個 HTTP標準協議 響應頭部信息,它被伺服器用來表明在內容協商演算法中選擇一個資源代表的時候應該使用哪些頭部信息。
通俗地我們可以理解為,伺服器區分該緩存的適用對象時,通過vary判斷要結合哪些Header的結果用於區分。
實現方式是源站通過在響應中,指定某一個或幾個header頭來標識資源的的版本。
例如,以文件壓縮為例,可以根據用戶請求Header中的Accept-encoding請求頭來決定返回不同壓縮格式的緩存:
- 客戶端請求頭包含 Accept-encoding:gzip,服務端需要返回gzip壓縮過的內容;
- 客戶端請求頭包含 Accept-encoding:br,服務端需要返回br壓縮過的內容。
在這種場景下,源站需要帶:Vary:Accept-encoding來表明用Accept-encoding的值來做多副本。
以上就是分享的阿里雲官方的教程,從域名添加到緩存優化設置加速的圖文教程。
阿里雲CDN活動地址:https://www.aliyun.com/product/cdn
1. 帶 [親測] 說明源碼已經被站長親測過!
2. 下載後的源碼請在24小時內刪除,僅供學慣用途!
3. 分享目的僅供大家學習和交流,請不要用於商業用途!
4. 本站資源售價只是贊助,收取費用僅維持本站的日常運營所需!
5. 本站所有資源來源於站長上傳和網路,如有侵權請郵件聯繫站長!
6. 沒帶 [親測] 代表站長時間緊促,站長會保持每天更新 [親測] 源碼 !
7. 盜版ripro用戶購買ripro美化無擔保,若設置不成功/不生效我們不支持退款!
8. 本站提供的源碼、模板、插件等等其他資源,都不包含技術服務請大家諒解!
9. 如果你也有好源碼或者教程,可以到審核區發布,分享有金幣獎勵和額外收入!
10.如果您購買了某個產品,而我們還沒來得及更新,請聯繫站長或留言催更,謝謝理解 !
GG資源網 » 阿里雲CDN從域名添加到緩存設置優化全圖文教程