cdn緩存過期時間
1. CDN緩存是什麼意思
CDN緩存,作為網路技術中的一環,其主要作用在於優化內容分發與加速訪問體驗。當我們在網路上瀏覽網頁、觀看視頻或訪問圖片時,有時會遇到載入緩慢、緩沖時間長等問題。CDN(Content Delivery Network)通過構建遍布全球的伺服器網路,將內容緩存在這些伺服器上,實現快速訪問。
CDN緩存的工作原理是,當用戶請求資源時,會優先從最近的CDN節點獲取,以減少網路延遲,提高訪問速度。這不僅減輕了源站伺服器的負擔,還能有效避免網路擁堵,確保用戶獲取內容的流暢性與穩定性。通過在不同地理位置部署節點,CDN能夠實現高效的數據分發,滿足用戶對內容快速訪問的需求。
在選擇CDN服務時,可以根據自身需求與預算進行綜合考量。大型雲服務商如阿里雲、騰訊雲提供穩定、高效的服務,適合對安全性和可靠性有高要求的用戶。而對於預算有限或對性價比有較高要求的用戶,中型服務商如劍盾雲等也是不錯的選擇。選擇CDN服務時,除了關注服務商的網路覆蓋范圍、穩定性、服務質量外,還應考慮其價格、技術支持等因素,以確保選擇到最適合自身需求的CDN服務。
2. CDN | CDN緩存規則及優先順序
一條緩存規則,該規則表示html後綴的文件會緩存5分鍾。
不管訪問多少次,X-Cache 始終是 MISS,X-Swift-CacheTime 也一直為 0。
X-Cache 為 MISS,X-Swift-CacheTime 為 0,CDN不緩存。
X-Cache 為 MISS,X-Swift-CacheTime 為 0,CDN不緩存。
X-Cache 為 MISS,X-Swift-CacheTime 為 0,CDN不緩存。
試下能否正常被CDN緩存。
X-Cache 變成了 HIT,X-Swift-CacheTime 變成了 300,也就是CDN緩存5分鍾。
緩存規則權重不同,有兩條緩存規則,其中 /static/ 目錄類型的權重最大,意味著優先順序最高。
請求 /static/ 目錄下 html 後綴的文件,看下匹配到哪條規則?
X-Swift-CacheTime: 120,這是匹配到了 /static/ 目錄類型的規則。
緩存規則權重相同, html 文件後綴名的規則創建時間最早,正常情況應該是匹配到該條規則。
X-Swift-CacheTime: 300,確實匹配到了 html 文件後綴名規則。
CDN不要設置緩存規則,然後nginx配置內容如下,Cache-Control設置為60秒,Expires設置為120秒。
源站響應頭部有 Cache-Control 、 Expires 、 Last-Modified 、 ETag ,測試看看哪個優先順序最高。
X-Swift-CacheTime: 60,Cache-Control 的優先順序高一些。
在nginx配置中將 add_header Cache-Control "max-age=60"; 去掉再試試。
X-Swift-CacheTime: 120,緩存規則是用 Expires 的時間了。
去掉nginx配置中的 expires 120s; 。
X-Swift-CacheTime 會隨著時間變化,這是因為緩存過期了,CDN重新去源站拉取,然後重新計算緩存過期時間。
ok,最後一步,將 Last-Modified 響應頭部給幹掉。
只有 Etag 響應頭部,不管訪問幾次,依舊是 X-Swift-CacheTime: 10。
將4個響應頭部都幹掉,看下CDN是否會緩存。
多次測試始終是 X-Cache: MISS 和 X-Swift-CacheTime: 0,這說明如果這4個響應頭部都沒了,CDN是不緩存的。
3. CDN加速應用中,如何解決DNS緩存問題
我看目前chinacache用的智能DNS
CDN好像也不能解決這個問題。而新浪用的就是chinacache,請問新浪是如何很好的處理這個問題的?
新浪的dns是自己的。這個問題本質上無解,好的方式是縮短紀錄的有效期,但是有很多local
dns並不遵守這樣的約定。
理想情況下,各地DNS的緩存時間即為設置的ttl時間,所以可以通過設置ttl時間來控制DNS緩存的時間。ttl時間設置的短,DNS緩存過期快,在機器故障的時候很快切換,對用戶的影響小;但是由於ttl設置的太短,緩存很快過期,要經常一層層的問域名的解析情況,DNS解析時間會比較長。以上是理想情況,真實情況下,個別的DNS伺服器並不遵從ttl時間,可能有做強制緩存多少時間,我們都沒辦法控制。