什麼是緩存?

從任何來源請求數據時,總會有一些延遲。對 Web 服務器的 Ping 以毫秒為單位進行測量,存儲訪問時間的延遲可以以微秒為單位,而 RAM 延遲以 CPU 時鐘週期進行測量。當然,這種速度在幾十年前是不可想像的,但在現在,它們永遠不夠快。訪問速度通常是某種形式的性能瓶頸。解決這個問題的方法之一是使用緩存。

緩存是一種存儲資源臨時副本的過程,其訪問速度比正常情況下更快。在軟件和硬件方面都有大量的實現。緩存可以充當讀取緩存、寫入緩存或兩者。

讀取緩存

在讀取緩存中,先前請求的數據存儲在緩存中以便更快地訪問。在某些情況下,緩存甚至可以先發製人地加載數據,從而允許從緩存中為第一個請求提供服務,而不僅僅是後續請求。

您最熟悉的讀取緩存是瀏覽器緩存。瀏覽器在這裡存儲請求資源的本地副本。這意味著如果重新加載網頁或加載使用大部分相同內容的類似頁面,則可以從緩存而不是 Web 服務器提供該內容。這不僅意味著網頁可以加載得更快,而且還減少了 Web 服務器的負載並減少了用戶需要下載的數據量,這對於按流量計費的連接來說非常重要。

RAM 本身也充當硬盤驅動器中數據的讀取緩存。在這種情況下,正在運行的程序的數據會先發製人地加載到 RAM 中,以便 CPU 可以更快地訪問它。來自 RAM 的數據然後被進一步緩存到 CPU 緩存,儘管這個過程要復雜得多,因為 CPU 緩存是以兆字節而不是千兆字節為單位測量的。

寫入緩存

寫緩存是一種可以吸收寫入較慢設備的數據的緩存。一個常見的例子是現代 SSD 中的 SLC 緩存。此緩存不允許更快地讀取數據,但是,寫入數據比寫入構成 SSD 其餘部分的 TLC 或 QLC 閃存要快得多。SLC 緩存可以吸收高速寫入操作,然後儘快將數據卸載到 TLC 閃存,TLC 閃存提供更好的存儲密度,但寫入速度也慢得多。以這種方式使用閃存優化了它的快速寫入速度和高存儲密度。

混合緩存

有許多處理緩存的方法可以讓它們同時充當讀緩存和寫緩存。這些方法中的每一種方法都以不同的方式處理寫操作,並且各有利弊。三個選項是回寫式、直寫式和回寫式。write-around 緩存在寫入時完全跳過緩存,write-through 緩存寫入緩存但僅在寫入存儲時才認為操作完成。回寫緩存寫入緩存,然後認為操作已完成,如果需要,依賴緩存將其傳輸到存儲。

如果您期望大量寫入,write-around 會很有用,因為它可以最大限度地減少緩存流失。然而,這確實意味著隨後讀取任何寫入數據的操作將在第一次面臨至少一次緩存未命中。直寫緩存立即緩存寫入操作,這意味著結果可以在第一次請求時從緩存中提供。但是,要被視為完成,寫入操作也需要將數據寫入磁盤,這會增加延遲。回寫式高速緩存與直寫式高速緩存具有相同的優勢,允許立即從高速緩存提供寫入的數據。它不需要寫入操作來寫入磁盤,但被認為是完整的。這減少了寫入延遲,但如果緩存易失並且在斷電之前沒有完成將數據寫回存儲,則會帶來數據丟失的風險。

如何從緩存中刪除數據?

容量是任何緩存的限制因素之一。大緩存需要很長時間來搜索,首先抵消了使用緩存的很大一部分優勢。用於緩存的內存技術也往往比它們用於緩存的內存更昂貴。如果不是這種情況,則該內存層可能會切換內存技術以提高性能。這兩個因素都意味著緩存往往相對較小,尤其是與它們從中緩存的存儲介質相比時。RAM 的容量小於存儲容量,CPU 緩存的容量小於 RAM。SLC 緩存的容量小於 TLC 內存。

所有這些意味著通常需要將數據從緩存中循環出來,以便為需要緩存的新數據釋放空間。對此有一系列不同的方法。“最少使用”,傾向於逐出訪問次數最少的緩存條目。這可用於預測哪些條目對未來緩存未命中的影響最小,但也會將最近添加的條目計為訪問次數較少,這可能會導致緩存流失。

“最近最少使用”傾向於驅逐一段時間未使用的緩存條目。這假定它們當前未被使用,但不考慮它們是否在一段時間內被大量使用。“Most recently used”傾向於驅逐最近使用的緩存條目,假設它們已經被使用並且不需要再次使用。最好的方法通常是將這三者結合起來,根據使用情況統計。

過時的信息和安全風險

緩存的主要風險是它們包含的信息可能會過時。當原始數據已更新而緩存條目已過時時,緩存條目被視為過時。定期驗證所提供的實時副本是否仍與緩存副本匹配非常重要。

特別是在網站中,識別哪些數據可以緩存哪些數據不能緩存也非常重要。例如,緩存一個大的不變的 JavaScript 文件是完全沒問題的。這樣可以避免用戶每次都下載它,甚至可以使同一緩存服務的其他用戶受益。但是,您不能緩存特定於會話的數據。想像一下,如果您以自己的身份登錄並瀏覽消息應用程序,卻發現您收到的是其他用戶消息的緩存版本,會發生什麼情況。值得慶幸的是,Web 服務器可以指定哪些資源可以緩存,哪些不能緩存,而且這些問題通常是眾所周知的,所以很少有這樣的問題。

結論

緩存是內存的一部分,可以以一種比再次完成正常數據訪問過程更快訪問的存儲方法存儲一些最近使用的數據。緩存的容量通常是有限的,這意味著它需要在緩存滿後逐出條目。緩存通常對用戶是透明的,這意味著延遲是結果是通過緩存提供的唯一指示。



Leave a Comment

如何克隆硬碟

如何克隆硬碟

在資料是寶貴資產的現代數位時代,在 Windows 上複製硬碟對許多人來說可能是一個至關重要的過程。這份綜合指南

如何修復驅動程式 WUDFRd 在 Windows 10 上載入失敗?

如何修復驅動程式 WUDFRd 在 Windows 10 上載入失敗?

您在啟動電腦時是否遇到錯誤訊息,提示驅動程式 WUDFRd 無法在電腦上載入?

如何修復 NVIDIA GeForce Experience 錯誤代碼 0x0003

如何修復 NVIDIA GeForce Experience 錯誤代碼 0x0003

您是否在桌面上遇到 NVIDIA GeForce 錯誤代碼 0x0003?如果是,請閱讀部落格以了解如何快速輕鬆地修復此錯誤。

How to Use Auto Clicker for Chromebook

How to Use Auto Clicker for Chromebook

Today, were going to delve into a tool that can automate repetitive clicking tasks on your Chromebook: the Auto Clicker. This tool can save you time and

如何在 2023 年從 Windows PC 中移除 GPU

如何在 2023 年從 Windows PC 中移除 GPU

您需要從 PC 上卸下 GPU 嗎?和我一起在這個分步指南中解釋如何從您的 PC 中刪除 GPU。

如何在台式機和筆記本電腦中安裝 NVMe SSD

如何在台式機和筆記本電腦中安裝 NVMe SSD

買了新的 NVMe M.2 SSD 但不知道如何安裝?繼續閱讀以了解如何在筆記本電腦或台式機上安裝 NVMe SSD。

什麼是邏輯炸彈?

什麼是邏輯炸彈?

邏輯炸彈是一種安全事件,攻擊者會在其中設置延遲操作。繼續閱讀以了解更多信息。

什麼是震網?

什麼是震網?

Stuxnet 是一種自我傳播的蠕蟲病毒。這是第一次使用網絡武器,也是第一個惡意軟件實例。

什麼是道德黑客?

什麼是道德黑客?

道德黑客是在法律約束下行事的黑客。繼續閱讀以了解有關該主題的更多信息。

什麼是對稱加密?

什麼是對稱加密?

密碼學有很多不同的部分。如果你想加密一些數據,你可以使用兩種類型的算法: symmetric