緩存是將文件副本存儲在緩存或臨時存儲位置中的過程,以便可以更快地訪問它們。從技術上講,緩存是文件或數據副本的任何臨時存儲位置,但通常該術語用于指代 Internet 技術。DNS 服務器緩存 DNS 記錄以加快查找速度,CDN 服務器緩存內容以縮短延遲,Web 瀏覽器則緩存 HTML文件、JavaScript 和圖像以更快加載網站。
要了解緩存的工作方式,可以想一下現(xiàn)實世界中食品和其他物資的儲藏。當探險家羅爾德·阿蒙森在 1912 年從南極之旅返回時,他和手下依靠他們在沿途儲藏的食物為生。這比旅途之中等待大本營運送物資要有效得多。Internet 上的緩存具有類似的用途;它們臨時存儲用戶在網絡上“旅行”所需的“物資”或內容。
什么是 CDN 緩存?
CDN(內容交付網絡)將圖像、視頻或網頁等內容緩存在比源站服務器更靠近最終用戶的代理服務器中。(代理服務器是一種從客戶端接收請求并將其傳遞給其他服務器的服務器。)由于這些服務器距離發(fā)出請求的用戶較近,因此 CDN 能夠更快地交付內容。
CDN 可以比作連鎖雜貨店:購物者不必前往可能數百英里遠種植有糧食的農場,而是去當地的雜貨店,盡管仍然需要走些路,但距離要近得多。由于雜貨店儲藏來自遠方農場的食品,因此去雜貨店購買只需花費幾分鐘而不是幾天。同樣,CDN 緩存可以“儲藏”Internet 上顯示的內容,讓網頁加載速度變得更快。
如何緩存內容?
當用戶向使用 CDN 的網站請求內容時,CDN 從源站服務器獲取該內容,然后保存該內容的副本以便為將來的請求服務。只要有用戶繼續(xù)請求,緩存的內容就會保留在 CDN 緩存中。
什么是緩存命中?什么是緩存未命中?
所謂緩存命中,是指客戶端設備向緩存請求內容,并且緩存中已保存有該內容。如果緩存中沒有請求的內容,則稱為緩存未命中。如果發(fā)生緩存未命中,CDN 服務器會將請求傳遞到源站服務器,然后在源站服務器做出響應后緩存內容,以便后續(xù)請求能夠產生緩存命中。
CDN 緩存服務器位于何處?
CDN 緩存服務器位于全球各地的數據中心中。Cloudflare 的 CDN 服務器遍布全球 200 個城市,以盡可能縮短與訪問內容的最終用戶的距離。CDN 服務器所在的位置也稱為數據中心。
緩存的數據在 CDN 服務器中保留多久時間?
當網站以所請求內容響應 CDN 服務器時,它們會在內容中附加信息,告知服務器應將其存儲多久時間。此信息存儲在響應中稱為 HTTP 標頭的部分中,它會指定要將內容緩存幾小時幾分幾秒。這稱為生存時間(TTL)。TTL 過期后,緩存會刪除內容。如果內容已有一段時間未被請求過,或者 CDN 客戶手動清除了某些內容,一些 CDN 也會提前從緩存中清除文件。
其他種類的緩存如何工作?
Web 瀏覽器緩存發(fā)生在瀏覽器將網站上的文件副本保存在用戶設備的硬盤驅動器上時。緩存網頁后,瀏覽器僅需要加載新頁面或更新的頁面;這樣一來,即使 Internet 連接速度較慢,瀏覽器也能快速交付頁面。瀏覽器會保留這些文件,直到它們的 TTL 過期或硬盤驅動器緩存已滿為止。如有需要,用戶也可以清除其瀏覽器緩存。
DNS 緩存在 DNS 服務器上進行。服務器將近期的 DNS 查找存儲在其緩存中,因而無需查詢名稱服務器,便能立即使用域的 IP 地址進行回復。
搜索引擎可以緩存經常出現(xiàn)在搜索結果中的網頁;這樣,即使用戶嘗試訪問的網站暫時關閉或無法響應,它們也能回答用戶查詢。
Cloudflare 如何使用緩存?
Cloudflare 提供的 CDN 擁有分散于世界各地的 200 個 PoP。Cloudflare 提供免費 CDN 緩存服務,而付費 CDN 客戶還能夠自定義其內容的緩存方式。使用的網絡采用 Anycast;也就是說,同樣的內容可以從這些 PoP 中的任何一個進行交付。不論是倫敦用戶還是悉尼用戶,都可以查看從幾英里外 CDN 服務器加載的相同內容。