CDN這個東西,固然是個好東西。。。因此看到有FAQ就理所固然的複製下來,其實,最近我忽然想到一件事情,中國的地區域名還有一個頗有意思的地域域名,那就是js.cn,因此,我悄悄的申請了兩個域名,cache.js.cn和cdn.js.cn,就是想用來作這種CDN轉發,固然,只是簡單的。。。 php
我最初的想法是(有一小部分),若是個人服務器裏有N多人裝了DZ論壇,那麼這些JS和CSS其實都是共用的。若是我都用一樣的域名進行轉發,那,其實節約了不少空間,也節約了帶寬。由於同一個域名出來的JS和CSS文件,理論上是應該被緩存的哦。。css
如下內容就是FAQ,本身也學習一下。。。html
1.CDN加速原理
經過動態域名解析,網友的請求被分配到離本身最快的服務器。CDN服務器直接返回緩存文件或經過專線代理原站的內容。
網絡加速+內容緩存,有效提供訪問速度web
2.CDN節點數量
全國多個機房,每一個機房多臺服務器,CDN節點通常上百臺apache
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,這樣避免每次用戶請求都轉到原站jsp