CDN緩存

網站的加載速度,除了資源的多少和大小外,很大部分時間是用於網絡傳輸的,而網絡傳輸時間與用戶瀏覽器與資源所在服務器的地理位置直接相關,要提高網站加載速度,一個辦法就是使資源所在服務器與用戶的地理位置儘可能靠近。web

CDN:全稱是Content Delivery Network,即內容分發網絡。其基本思路是儘量避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。CDN包括分佈式存儲、負載均衡、網絡請求的重定向和內容管理4個要件。而其中呢,內容管理和全局的網絡流量管理是CDN的核心所在。CDN確保內容以一種極爲高效的方式爲用戶的請求提供服務,使用戶可就近取得所需內容,解決 Internet網絡擁擠的情況,提升用戶訪問網站的響應速度。瀏覽器

CDN緩存通常是由網站管理員本身部署,爲了讓他們的網站更容易擴展並得到更好的性能。一般狀況下,瀏覽器先向CDN網關發起Web請求,網關服務器後面對應着一臺或多臺負載均衡源服務器,會根據它們的負載請求,動態將請求轉發到合適的源服務器上。從瀏覽器角度來看,整個CDN就是一個源服務器,從這個層面來講,瀏覽器和服務器之間的緩存機制,在這種架構下一樣適用。緩存

CDN拓撲圖以下:

1.用戶向瀏覽器輸入www.web.com這個域名,瀏覽器第一次發現本地沒有dns緩存,則向網站的DNS服務器請求;
2.網站的DNS域名解析器設置了CNAME,指向了www.web.51cdn.com,請求指向了CDN網絡中的智能DNS負載均衡系統;
3.智能DNS負載均衡系統解析域名,把對用戶響應速度最快的IP節點返回給用戶;
4.用戶向該IP節點(CDN服務器)發出請求;
5.因爲是第一次訪問,CDN服務器會向原web站點請求,並緩存內容;
6.請求結果發給用戶。服務器

CDN的緩存機制

CDN邊緣節點緩存策略因服務商不一樣而不一樣,但通常都會遵循http標準協議,經過http響應頭中的Cache-control: max-age的字段來設置CDN邊緣節點數據緩存時間。當客戶端向CDN節點請求數據時,CDN節點會判斷緩存數據是否過時,若緩存數據並無過時,則直接將緩存數據返回給客戶端;不然,CDN節點就會向源站發出回源請求,從源站拉取最新數據,更新本地緩存,並將最新數據返回給客戶端。因此,若是咱們修改了內容,最好加個版本號,讓CDN從新獲取資源,從而減小沒必要要的麻煩。網絡

CDN服務商通常會提供基於文件後綴、目錄多個維度來指定CDN緩存時間,爲用戶提供更精細化的緩存管理。CDN緩存時間會對「回源率」產生直接的影響。若CDN緩存時間較短,CDN邊緣節點上的數據會常常失效,致使頻繁回源,增長了源站的負載,同時也增大的訪問延時;若CDN緩存時間太長,會帶來數據更新時間慢的問題。開發者須要增對特定的業務,來作特定的數據緩存時間管理。架構

CDN的問題

CDN的分流做用不只減小了用戶的訪問延時,也減小了源站的負載。
但其缺點主要是緩存的同步問題:當網站更新時,若是CDN節點上數據沒有及時更新,即使用戶再瀏覽器使用Ctrl +F5的方式使瀏覽器端的緩存失效,也會由於CDN邊緣節點沒有同步最新數據而致使用戶訪問異常。負載均衡

如何解決CDN的問題

CDN的主要問題是因爲緩存同步不及時帶來的,緩存更新有兩種方式:分佈式

  • 定製緩存策略
    靜態文件在返回時由源服務器控制expires、cache-control等屬性來定義CDN的緩存策略。
  • 源服務器資源更新時,主動刷新CDN緩存
    CDN邊緣節點對開發者是透明的,相比於瀏覽器Ctrl+F5的強制刷新來使瀏覽器本地緩存失效,開發者能夠經過CDN服務商提供的「刷新緩存」接口來達到清理CDN邊緣節點緩存的目的。這樣開發者在更新數據後,可使用「刷新緩存」功能來強制CDN節點上的數據緩存過時,保證客戶端在訪問時,拉取到最新的數據。
CDN拓撲圖部份內容摘自: https://blog.csdn.net/coolmem...
相關文章
相關標籤/搜索