CDN快取策略FAQ及更新頻率
CDN簡單解釋就是映象儲存加智慧解析。先把靜態的內容儲存到各大區域的伺服器群上,通過ip判斷訪問使用者來自的區域,就近調取內容。
因為是快取,所以能使用cdn的都是一些可以靜態處理的東西。比如說視訊、圖片、下載檔案等,動態的東西是需要回源從源伺服器通過資料庫調取的。因此,cdn的使用網站,一般是視訊網站,圖片網站、下載網站。至於動態的,不如使用者登入,或者部落格類這種不適合做cdn加速,因為最終要回原訪問,用cdn後再回原,中間加了一個環節,反而會慢。
下面來看CDN細說:
1.CDN加速原理
通過動態域名解析,網友的請求被分配到離自己最快的伺服器。CDN伺服器直接返回快取檔案或通過專線代理原站的內容。
網路加速+內容快取,有效提供訪問速度
2.CDN節點數量
全國多個機房,每個機房多臺伺服器,CDN節點一般上百臺
3.CDN快取什麼內容
快取html、圖片、css、xml等靜態資源,不快取含有?的動態地址、jsp、php,js檔案也不快取【除非特殊設定】
快取原站返回HTTP狀態為20*或304,不快取其他狀態(例如404,500,503)
4.CDN快取內容的更新
a)使用者首次請求,CDN從原站抓取後快取,直到檔案過期後有使用者請求再次更新
b)程式主動通知CDN抓取
5.CDN快取內容的有效期
a)原站apache吐出的靜態檔案:由apache的expire和header模組控制
主要兩項:last-modified,cache-control:max-age
apache預設配置,所有靜態檔案在cdn只快取3600s【需要我們按需求調整被加速伺服器的apache設定】
3600s後cdn失效,使用者訪問時會重新請求原站,如果沒有變化,快取失效週期自動延長10%。
b)原站jsp或php吐出的動態內容(url形式必須是靜態的)
由程式控制last-modified,cache-control:max-age public ,apache的設定將不起作用
cdn根據這兩項判斷是否需要到原站更新內容
6.CDN和應用的結合策略
a)變化不頻繁的頁面:例如圖吧的圖片顯示頁、車型頁、已結束的比賽對陣頁
在原站生成靜態頁面,原站apache上定義過期時間,例如1天。
原站上靜態檔案更新後,可以等待cdn過期。或者主動通知cdn更新(隨著cdn節點越來越多,代價會非常高)
b)變化頻繁的頁面:例如足球庫中的及時亞盤、及時歐賠、正在進行的比賽對陣頁
不生成靜態頁面,由jsp或php定義過期時間,例如5s或60s。cdn過期後,如果有使用者訪問就從原站上抓取。
優點:相關頁面內容更新後,不需要主動通知100個原站都來抓取,有效降低原站的壓力。
如果頁面內容沒有變化,返回lastmodified不變,這樣原站會直接返回304給cdn,cdn也會返回304給使用者。減少網路傳輸和速度
比賽結束後,“正在進行的比賽對陣頁”轉換為第一類情況,再生成靜態檔案
c)特殊靜態資源:例如圖片庫和某些大型產品庫中的評論js
或者頻繁訪問、頻繁更新的頁面:例如足球賽事庫的及時比分檔案
通過apache nocache告訴IE不快取,html中就不需要使用pinglun.js?123456這樣的程式碼形式
然後用max-age告訴cdn快取1s,這樣避免每次使用者請求都轉到原站。