什么是緩存?
緩存是嵌入在應用程序或設備內存中的硬件或軟件組件,可自動臨時存儲用戶使用的數據,以減少下次訪問應用程序或設備時的數據檢索時間和工作量。
緩存是用于在計算機系統中臨時存儲信息(通常是數據)的軟件或硬件。它是一種適度形式的快速、昂貴的內存,用于增強頻繁或經常訪問的數據的性能。緩存數據暫時保存在緩存用戶專屬的存儲介質上,與主存儲分開。中央處理器 (CPU)、應用程序、網絡瀏覽器和操作系統都使用緩存。
使用緩存是因為大容量或主存儲無法滿足用戶的需求。緩存可最大限度地減少數據訪問時間、降低延遲并增強輸入/輸出 (I/O)。緩存方法增強了應用程序性能,因為實際上所有應用程序工作負載都依賴于 I/O 操作。
緩存存在于硬件和軟件中。
處理來自臺式機、筆記本電腦、智能手機或平板電腦上軟件的數據的 CPU 也有自己的緩存。這個 CPU 緩存是一個緊湊的內存塊,旨在幫助 CPU 檢索經常訪問的數據。它保存了設備的主內存用來更快地運行指令的信息,而不是只在需要時才加載每條數據的情況。
每個在線瀏覽器都保留自己的緩存,包括 Microsoft Edge、Google Chrome、Firefox 和 Safari。瀏覽器緩存保存顯示瀏覽器訪問的網頁所需的文件。這包括定義網站的 HTML 文檔、層疊樣式表 (CSS)指南、Javascript、cookie 和圖形。
例如,當您瀏覽亞馬遜時,它會檢索與您看到的產品頁面相關的所有照片——HTML、創建網站所需的腳本文件,以及您的登錄憑據和購物車內容等自定義數據。如果您刪除瀏覽器的緩存,零售網站會要求您重新登錄并重新配置您的首選項。
通常,應用程序還會保留自己的緩存。應用程序,如瀏覽器,存儲他們認為必不可少的文檔和信息,允許他們在必要時快速重新加載數據。照片、媒體預覽、瀏覽歷史以及其他用戶偏好可能是各種應用程序緩存的數據類型。
緩存如何工作?
高速緩存中的數據通常存儲在可立即訪問的硬件中,例如 RAM(隨機存取存儲器),并且可以與軟件組件結合使用。緩存的基本目標是通過消除與它后面較慢的存儲層聯系的需要來提高數據檢索速度。
緩存通常臨時存儲一小部分數據以換取容量,這與數據存檔相反,后者的數據通常是全面且持久的。
當緩存客戶端嘗試檢索數據時,它首先檢查緩存。如果數據位于緩存中,則稱為緩存命中。提供緩存命中的嘗試比例稱為緩存命中率或比率。
不在緩存中的數據從主存中取出并放入緩存中。這稱為高速緩存未命中。這是如何實現的,以及從緩存中刪除哪些信息為新數據創建空間,由緩存算法、緩存機制和系統規則決定。
各種緩存策略控制緩存的操作。Write-around 規則繞過緩存以支持存儲的寫入操作。這可以防止高速緩存在大量寫入 I/O 期間被淹沒。這種技術的缺點是數據在從存儲中讀取之前不會被緩存。因此,由于尚未緩存數據,此讀取操作速度較慢。
直寫緩存策略將信息存儲在緩存和存儲中。直寫式緩存的好處是新記錄的數據總是被緩存,允許快速讀取。然而,直到信息被同時寫入高速緩存和主體存儲,寫操作才算完成。這可能會導致寫入操作延遲。
回寫緩存類似于直寫緩存,因為所有寫入都被路由到緩存。相反,回寫式緩存認為寫入過程在信息被緩存后完成。然后數據從緩存傳輸到存儲系統。
現在,讓我們了解硬件緩存的工作原理。
硬件像內存塊一樣執行緩存,用于臨時存儲可能再次需要的數據。CPU、SSD 和 HDD通常具有基于硬件的緩存,而瀏覽器和 Web 服務器通常依賴于基于軟件的緩存。
緩存由條目集合組成。每個條目都包含相關信息,這些信息是備份存儲中存儲的確切數據的副本。每個條目還包括一個標簽,用于標識備份存儲中的材料,它是該材料的副本。標記使并發的面向緩存的算法能夠在多個層上運行而不會受到差分中繼干擾。
每當緩存客戶端(CPU、瀏覽器或操作系統)想要訪問預期駐留在底層存儲中的數據時,它都會首先檢查緩存。如果可以找到帶有適合必要數據的標簽的條目,則改用該條目的數據。這稱為緩存命中。
例如,網絡瀏覽器可能會檢查其在光盤上的本地緩存,以查看其是否具有作為特定 URL 的網站資料的本地備份文件。在這種情況下,URL 地址就是標簽,而網頁的內容就是數據。緩存訪問導致緩存命中的比例稱為緩存的命中率或命中率。
緩存未命中是另一種情況,當檢查緩存但未找到具有必要標記的項目時會發生這種情況。這需要從備份存儲進行更昂貴的數據訪問。下載所需數據后,通常將其存儲在緩存中以備將來使用。
在高速緩存未命中時,擦除當前高速緩存記錄以為新獲得的數據創建空間。替換策略是指用于確定替換哪個條目的試探法。一種常見的替換策略,“最近最少使用 (LRU)”,將最早的條目替換為最近最少訪問的條目。
高效的緩存算法根據緩存材料的數量以及緩存和備份存儲的延遲和資源利用率來計算使用命中率。