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