快取儲存檔案的複本,以便更快地將它們傳遞到需要的地方。
閱讀本文後,您將能夠:
複製文章連結
快取是指將檔案複本儲存在快取(或暫存位置)中,使其可更快存取的過程。從技術上講,快取是檔案或資料複本的任何暫存位置,但該詞彙通常用於指代網際網路技術。Web 瀏覽器快取 HTML 檔案、JavaScript 和影像,以便更快地載入網站,而 DNS 伺服器快取 DNS 記錄以加快查詢速度,CDN 伺服器快存內容以減少延遲。
要瞭解快取的運作方式,可以想象一下現實世界中食物和其他物資的儲藏。1912 年,當探險家 Roald Amundsen 從南極旅行返回時,他和他的手下依靠沿途儲存的食物為生。這比在旅途中等待從大本營運送物資要有效得多。網際網路上的快取也有類似的目的;它們臨時儲存使用者在 Web 上旅行所需的「物資」或內容。
每次使用者載入網頁時,他們的瀏覽器都必須下載大量資料才能顯示該網頁。為了縮短網頁載入時間,瀏覽器會快取網頁上顯示的大部分內容,並將網頁內容的複本儲存在裝置的硬碟上。這樣,下次使用者載入頁面時,大部分內容已經儲存在本地,頁面載入速度會更快。
瀏覽器會儲存這些檔案,直到它們的存留時間 (TTL) 到期或硬碟快取已滿。(TTL 表示應快取內容的時間長度。)如果需要,使用者還可以清除其瀏覽器快取。
清除瀏覽器快取后,每個網頁都將像使用者首次造訪該頁面時一樣載入。如果某些內容在第一次載入不正確並且被快取,則清除快取可以使其正確載入。但是,清除瀏覽器快取也會暫時減慢網頁載入時間。
CDN(內容傳遞網路)將內容(如影像、影片或網頁)快取在代理伺服器中,這些代理伺服器比原始伺服器更靠近終端使用者。(代理伺服器是從用戶端接收請求並將其傳遞給其他伺服器的伺服器。)由於伺服器離發出請求的使用者更近,因此 CDN 能夠更快地傳遞內容。
可以將 CDN 想像成連鎖雜貨店:購物者不必一路去往數百英里外種植食物的農場,而是去當地的雜貨店,這仍然需要走一段路,但要近得多。由於雜貨店儲存了來自遙遠農場的食物,因此只需要幾分鐘就可以在雜貨店買到物品,而不需要幾天時間。同樣,CDN 快取「儲存」了網際網路上顯示的內容,以便網頁可以更快載入。
當使用者從使用 CDN 的網站請求內容時,CDN 會從原始伺服器擷取該內容,然後儲存內容複本以滿足將來的請求。只要使用者繼續請求快取的內容,它就會保留在 CDN 快取中。
快取命中是指用戶端裝置向快取發出內容請求,並且快取之前已儲存該內容。當快取沒有請求的內容時,就會發生快取未命中。
快取命中意味著內容將能夠更快地載入,因為 CDN 可以立即將其交付給終端使用者。在快取未命中的情況下,CDN 伺服器會將請求傳遞給原始伺服器,然後在原始伺服器回應后快取內容,以便後續請求將產生快取命中。
CDN 快取伺服器位於全球的資料中心。Cloudflare 在遍佈全球的 330 個城市擁有 CDN 伺服器,以便盡可能接近存取內容的終端使用者。CDN 伺服器所在的位置也稱為資料中心。
當網站使用請求的內容回應 CDN 伺服器時,它們也會附加內容的 TTL,讓伺服器知道儲存多長時間。TTL 儲存在稱為 HTTP 標頭的回應部分中,它指定將快取內容的秒數、分鐘數或小時數。當 TTL 到期時,快取將移除內容。如果一段時間內未請求內容,或者 CDN 客戶手動清除某些內容,部分 CDN 也會提前從快取中清除檔案。
DNS 快取在 DNS 伺服器上進行。伺服器將最近的 DNS 查閱儲存在其快取中,因此它們不必查詢名稱伺服器,並且可以立即回覆網域的 IP 位址。
搜尋引擎可能會快取經常出現在搜尋結果中的網頁,這樣,即使使用者嘗試存取的網站暫時關閉或無法回應,它們也能回答使用者查詢。
Cloudflare 提供了一個 CDN,其中包含了 330 個全球分散的 PoP。Cloudflare 提供免費的 CDN 快取服務,而付費 CDN 客戶可以自訂其內容的快取方式。該網路採用 Anycast,這意味著可以從這些資料中心中的任何一個交付相同的內容。倫敦的使用者和悉尼的使用者都可以查看從幾英里外的 CDN 伺服器載入的相同內容。