CDN緩存策略

 CDN這個東西,當然是個好東西。。。所以看到有FAQ就理所當然的複製下來,其實,最近我突然想到一件事情,中國的地區域名還有一個很有意思的地域域名,那就是js.cn,所以,我悄悄的申請了兩個域名,cache.js.cn和cdn.js.cn,就是想用來做這種CDN轉發,當然,只是簡單的。。。

我最初的想法是(有一小部分),如果我的服務器裏有N多人裝了DZ論壇,那麼這些JS和CSS其實都是共用的。如果我都用同樣的域名進行轉發,那,其實節約了很多空間,也節約了帶寬。因爲同一個域名出來的JS和CSS文件,理論上是應該被緩存的哦。。

以下內容就是FAQ,自己也學習一下。。。

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,這樣避免每次用戶請求都轉到原站

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章