架構(主站www→CDN picdn→源站public):

一、CDN緩存優化(核心:提高命中率,減少回源流量)

緩存優化的核心目標是「讓CDN儘量緩存你的靜態資源,少向源站(public)請求」,阿里雲CDN需配置5個關鍵項,按優先級操作:

1. 第一步:配置精準的「緩存規則」(最核心)

作用:指定哪些資源緩存、緩存多久,避免“不該緩存的緩存了,該緩存的沒緩存”。

  • 操作路徑:登錄阿里雲CDN控制枱 → 左側「域名管理」→ 找到你的CDN域名(picdn.yuming.com)→ 點擊「配置」→ 下滑找到「緩存配置」→ 「緩存規則」→ 點擊「添加規則」。
  • 配置內容(按資源類型分3條規則,優先級從高到低):

規則名稱

匹配模式

緩存鍵配置(關鍵!)

緩存過期時間

作用

圖片類資源緩存

後綴匹配

包含:jpg,jpeg,png,gif,webp,bmp,svg,ico,tiff,avif,heic

30天

圖片更新頻率低,長緩存減少回源

JS/CSS資源緩存

後綴匹配

包含:js,css,woff2,woff,ttf

15天

靜態腳本/css,中期緩存

其他靜態資源

前綴匹配

路徑:/uploads/(你的靜態資源存儲目錄)

7天

兜底緩存,覆蓋未單獨配置的資源

  • 關鍵注意點:
  • 緩存鍵配置:默認勾選「協議+域名+路徑+查詢參數」,但要點擊「高級配置」→ 「忽略參數」→ 勾選「忽略全部參數」或「忽略指定參數」(比如忽略 t=123v=xxx 這類臨時參數),避免“相同資源因參數不同被重複緩存”(比如 a.jpg?t=1a.jpg?t=2 被當成兩個資源)。
  • 優先級:圖片規則>JS/CSS規則>其他規則(阿里雲默認按添加順序排序,可手動拖拽調整)。
  • 不要勾選「遵循源站Cache-Control」:因為你源站是HTTP回源且沒配置Cache-Control,勾選後會導致CDN不緩存,直接回源。
2. 第二步:開啓「緩存預熱」(主動把高頻資源緩存到CDN)

作用:新上線或高頻訪問的資源(比如首頁輪播圖、熱門商品圖片),主動推送到CDN節點,用户第一次訪問就命中緩存,不用等CDN回源拉取。

  • 操作路徑:CDN控制枱 → 左側「緩存預熱」→ 「添加預熱任務」。
  • 配置內容:
  • 加速域名:選擇 picdn.yuming.com
  • 預熱URL:輸入資源完整URL(支持批量粘貼,每行1個),比如 https://picdn.yuming.com/uploads/attach/2025/09/xxx.jpg
  • 選擇「強制覆蓋」(可選,更新資源時用)→ 提交。
  • 注意事項:
  • 阿里雲CDN有免費預熱額度(按套餐不同,通常1000-10000條/天),優先預熱高頻訪問的資源,別浪費額度。
  • 預熱完成後,在「預熱記錄」裏查看狀態(“成功”即生效)。
3. 第三步:配置「忽略URL參數」(補充緩存鍵優化)

作用:進一步避免因無關參數導致的緩存失效,和第一步的「緩存鍵忽略參數」互補。

  • 操作路徑:CDN域名配置頁 → 「緩存配置」→ 「忽略URL參數」→ 點擊「設置」。
  • 配置內容:選擇「忽略全部參數」(適合純靜態資源,無動態參數需求),或「忽略指定參數」(比如 tvtimestamp 等臨時參數)。
  • 舉例:如果用户訪問 a.jpg?t=123a.jpg?t=456,CDN會當成同一個 a.jpg 緩存,提高命中率。
4. 第四步:開啓「緩存穿透防護」(避免惡意請求打穿CDN)

作用:防止有人請求不存在的資源(比如 xxx.jpg/123),導致CDN頻繁回源(源站返回404,CDN不緩存),浪費回源流量。

  • 操作路徑:CDN域名配置頁 → 「安全配置」→ 「緩存穿透防護」→ 開啓。
  • 配置內容:
  • 防護模式:選擇「智能防護」(阿里雲自動識別惡意請求)。
  • 緩存不存在資源:勾選「緩存404狀態碼」→ 緩存時間設為「10分鐘」(短期緩存,避免重複回源)。
5. 第五步:配置「防盜鏈」(雙重保障,避免盜鏈消耗流量)

作用:只允許主站(www.yuming.com)和CDN回源IP訪問,防止別人盜用你的CDN資源(比如在其他網站直接引用你的圖片),導致額外流量消耗。

  • 操作路徑:CDN域名配置頁 → 「安全配置」→ 「Referer防盜鏈」→ 開啓。
  • 配置內容:
  • 防盜鏈類型:選擇「白名單」。
  • 允許的Referer:輸入 https://www.yuming.com/(主站域名,結尾加 / 匹配所有子路徑),再添加「CDN回源IP段」(從阿里雲CDN控制枱「回源配置」→ 「回源IP白名單」獲取官方IP段,複製粘貼到這裏)。
  • 勾選「允許空Referer」(可選,避免部分瀏覽器直接訪問圖片時被攔截)。

二、資源壓縮(核心:減小資源體積,節省傳輸流量)

阿里雲CDN支持「Gzip壓縮」和「Brotli壓縮」(優先Brotli,壓縮率更高,節省流量更多),配置後圖片/JS/CSS體積可減少30%-70%,操作步驟如下:

1. 第一步:開啓「Brotli壓縮」(推薦優先)
  • 操作路徑:CDN域名配置頁 → 「性能優化」→ 「壓縮配置」→ 找到「Brotli壓縮」→ 開啓。
  • 配置內容:
  • 壓縮級別:選擇「6級」(平衡壓縮率和速度,阿里雲默認推薦,級別越高壓縮率越高,但CDN節點消耗略大)。
  • 壓縮文件類型:勾選你需要壓縮的資源類型,推薦:
  • 文本類:js,css,html,htm,xml,json
  • 圖片類:jpg,png,gif(注意:已壓縮的圖片格式如webp、avif無需再壓縮,勾選後效果有限)。
  • 作用:比如1MB的JS文件,壓縮後可能只有300KB,傳輸流量直接減少70%。
2. 第二步:開啓「Gzip壓縮」(作為Brotli的兼容備份)
  • 操作路徑:同一「壓縮配置」頁面 → 找到「Gzip壓縮」→ 開啓。
  • 配置內容:
  • 壓縮級別:選擇「6級」(和Brotli一致)。
  • 壓縮文件類型:和Brotli保持一致(文本類+部分圖片類)。
  • 作用:部分老舊瀏覽器不支持Brotli,會自動使用Gzip壓縮,確保所有用户都能享受壓縮效果。
3. 第三步:源站Nginx同步配置壓縮(可選但推薦)

如果CDN回源時,源站(public.yuming.com)返回的資源已壓縮,CDN可直接轉發,減少CDN節點的壓縮壓力。在源站的Nginx配置中添加以下代碼:

server {
    listen 80;
    server_name public.yuming.com;
    root /cipan/www/wwwroot/yuming/public;

    # 開啓Gzip壓縮(和CDN兼容)
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/png image/gif;
    gzip_comp_level 6;
    gzip_min_length 1k; # 小於1KB的文件不壓縮(避免浪費資源)
    gzip_vary on; # 告訴CDN和瀏覽器該資源已壓縮

    # 其他配置(IP白名單、禁止敏感文件等,保持之前的配置)
}

三、配置生效與驗證(確保優化落地)

1. 生效時間:
  • 緩存規則、壓縮配置:提交後1-5分鐘生效(阿里雲CDN配置同步有延遲)。
  • 緩存預熱:通常5-30分鐘生效(取決於資源大小和節點數量)。
2. 驗證方法(用curl命令或瀏覽器開發者工具):
(1)驗證緩存是否生效:

在本地終端執行命令(替換成你的圖片URL):

curl -I https://picdn.yuming.com/uploads/attach/2025/09/xxx.jpg
  • 若返回頭中有 X-Cache: HIT(命中緩存),説明緩存生效;若為 X-Cache: MISS(未命中),刷新幾次再試(首次訪問可能未緩存)。
  • 查看 Cache-Control 頭,確認過期時間和你配置的一致(比如 max-age=2592000 對應30天)。
(2)驗證壓縮是否生效:

同樣用curl命令(添加 -H "Accept-Encoding: br,gzip" 模擬瀏覽器請求):

curl -I -H "Accept-Encoding: br,gzip" https://picdn.yuming.com/xxx.js
  • 若返回頭中有 Content-Encoding: br(Brotli)或 gzip,説明壓縮生效。
  • 對比壓縮前後的文件大小:用瀏覽器「開發者工具」→ 「Network」→ 查看資源的「Size」(壓縮後大小)和「Content-Length」(原始大小),確認體積減少。
(3)查看阿里雲CDN監控:
  • 控制枱 → 「監控報表」→ 「緩存命中率」:目標≥90%(越高越好,説明大部分請求從CDN返回,少回源)。
  • 「流量報表」→ 「回源流量」:配置後應明顯下降(緩存生效)。
  • 「壓縮率報表」:查看Brotli/Gzip的壓縮率(通常≥30%)。

四、額外優化技巧(進一步節省流量)

  1. 圖片格式轉換:在阿里雲CDN開啓「圖片處理」功能(控制枱 → 「媒體處理」→ 「圖片處理」),將jpg/png自動轉換為webp/avif格式(體積比jpg小50%+,且質量無損),配置後CDN會自動向支持的瀏覽器返回優化格式。
  2. 過期資源刷新:如果資源更新了(比如圖片替換),在CDN控制枱「緩存刷新」→ 「添加刷新任務」,輸入更新的URL,強制CDN重新拉取最新資源(避免用户看到舊圖)。
  3. 關閉不必要的緩存:對動態資源(比如.php、.jsp),在緩存規則中添加「後綴匹配:php,jsp」→ 緩存時間設為「0秒」(不緩存),避免動態內容被緩存導致異常。

總結

按以上步驟配置後,你的阿里雲CDN緩存命中率會提升到90%以上,靜態資源體積減少30%-70%,回源流量和傳輸流量會顯著下降。核心是「緩存規則精準配置+Brotli壓縮+防盜鏈」,這三步是最見效的,後續只需通過監控報表觀察命中率和壓縮率,按需調整即可~