什么是緩存?
緩存是嵌入在應(yīng)用程序或設(shè)備內(nèi)存中的硬件或軟件組件,可自動(dòng)臨時(shí)存儲(chǔ)用戶使用的數(shù)據(jù),以減少下次訪問應(yīng)用程序或設(shè)備時(shí)的數(shù)據(jù)檢索時(shí)間和工作量。
緩存是用于在計(jì)算機(jī)系統(tǒng)中臨時(shí)存儲(chǔ)信息(通常是數(shù)據(jù))的軟件或硬件。它是一種適度形式的快速、昂貴的內(nèi)存,用于增強(qiáng)頻繁或經(jīng)常訪問的數(shù)據(jù)的性能。緩存數(shù)據(jù)暫時(shí)保存在緩存用戶專屬的存儲(chǔ)介質(zhì)上,與主存儲(chǔ)分開。中央處理器 (CPU)、應(yīng)用程序、網(wǎng)絡(luò)瀏覽器和操作系統(tǒng)都使用緩存。
使用緩存是因?yàn)榇笕萘炕蛑鞔鎯?chǔ)無法滿足用戶的需求。緩存可最大限度地減少數(shù)據(jù)訪問時(shí)間、降低延遲并增強(qiáng)輸入/輸出 (I/O)。緩存方法增強(qiáng)了應(yīng)用程序性能,因?yàn)閷?shí)際上所有應(yīng)用程序工作負(fù)載都依賴于 I/O 操作。
緩存存在于硬件和軟件中。
處理來自臺(tái)式機(jī)、筆記本電腦、智能手機(jī)或平板電腦上軟件的數(shù)據(jù)的 CPU 也有自己的緩存。這個(gè) CPU 緩存是一個(gè)緊湊的內(nèi)存塊,旨在幫助 CPU 檢索經(jīng)常訪問的數(shù)據(jù)。它保存了設(shè)備的主內(nèi)存用來更快地運(yùn)行指令的信息,而不是只在需要時(shí)才加載每條數(shù)據(jù)的情況。
每個(gè)在線瀏覽器都保留自己的緩存,包括 Microsoft Edge、Google Chrome、Firefox 和 Safari。瀏覽器緩存保存顯示瀏覽器訪問的網(wǎng)頁所需的文件。這包括定義網(wǎng)站的 HTML 文檔、層疊樣式表 (CSS)指南、Javascript、cookie 和圖形。
例如,當(dāng)您瀏覽亞馬遜時(shí),它會(huì)檢索與您看到的產(chǎn)品頁面相關(guān)的所有照片——HTML、創(chuàng)建網(wǎng)站所需的腳本文件,以及您的登錄憑據(jù)和購(gòu)物車內(nèi)容等自定義數(shù)據(jù)。如果您刪除瀏覽器的緩存,零售網(wǎng)站會(huì)要求您重新登錄并重新配置您的首選項(xiàng)。
通常,應(yīng)用程序還會(huì)保留自己的緩存。應(yīng)用程序,如瀏覽器,存儲(chǔ)他們認(rèn)為必不可少的文檔和信息,允許他們?cè)诒匾獣r(shí)快速重新加載數(shù)據(jù)。照片、媒體預(yù)覽、瀏覽歷史以及其他用戶偏好可能是各種應(yīng)用程序緩存的數(shù)據(jù)類型。
緩存如何工作?
高速緩存中的數(shù)據(jù)通常存儲(chǔ)在可立即訪問的硬件中,例如 RAM(隨機(jī)存取存儲(chǔ)器),并且可以與軟件組件結(jié)合使用。緩存的基本目標(biāo)是通過消除與它后面較慢的存儲(chǔ)層聯(lián)系的需要來提高數(shù)據(jù)檢索速度。
緩存通常臨時(shí)存儲(chǔ)一小部分?jǐn)?shù)據(jù)以換取容量,這與數(shù)據(jù)存檔相反,后者的數(shù)據(jù)通常是全面且持久的。
當(dāng)緩存客戶端嘗試檢索數(shù)據(jù)時(shí),它首先檢查緩存。如果數(shù)據(jù)位于緩存中,則稱為緩存命中。提供緩存命中的嘗試比例稱為緩存命中率或比率。
不在緩存中的數(shù)據(jù)從主存中取出并放入緩存中。這稱為高速緩存未命中。這是如何實(shí)現(xiàn)的,以及從緩存中刪除哪些信息為新數(shù)據(jù)創(chuàng)建空間,由緩存算法、緩存機(jī)制和系統(tǒng)規(guī)則決定。
各種緩存策略控制緩存的操作。Write-around 規(guī)則繞過緩存以支持存儲(chǔ)的寫入操作。這可以防止高速緩存在大量寫入 I/O 期間被淹沒。這種技術(shù)的缺點(diǎn)是數(shù)據(jù)在從存儲(chǔ)中讀取之前不會(huì)被緩存。因此,由于尚未緩存數(shù)據(jù),此讀取操作速度較慢。
直寫緩存策略將信息存儲(chǔ)在緩存和存儲(chǔ)中。直寫式緩存的好處是新記錄的數(shù)據(jù)總是被緩存,允許快速讀取。然而,直到信息被同時(shí)寫入高速緩存和主體存儲(chǔ),寫操作才算完成。這可能會(huì)導(dǎo)致寫入操作延遲。
回寫緩存類似于直寫緩存,因?yàn)樗袑懭攵急宦酚傻骄彺妗O喾?,回寫式緩存認(rèn)為寫入過程在信息被緩存后完成。然后數(shù)據(jù)從緩存?zhèn)鬏數(shù)酱鎯?chǔ)系統(tǒng)。
現(xiàn)在,讓我們了解硬件緩存的工作原理。
硬件像內(nèi)存塊一樣執(zhí)行緩存,用于臨時(shí)存儲(chǔ)可能再次需要的數(shù)據(jù)。CPU、SSD 和 HDD通常具有基于硬件的緩存,而瀏覽器和 Web 服務(wù)器通常依賴于基于軟件的緩存。
緩存由條目集合組成。每個(gè)條目都包含相關(guān)信息,這些信息是備份存儲(chǔ)中存儲(chǔ)的確切數(shù)據(jù)的副本。每個(gè)條目還包括一個(gè)標(biāo)簽,用于標(biāo)識(shí)備份存儲(chǔ)中的材料,它是該材料的副本。標(biāo)記使并發(fā)的面向緩存的算法能夠在多個(gè)層上運(yùn)行而不會(huì)受到差分中繼干擾。
每當(dāng)緩存客戶端(CPU、瀏覽器或操作系統(tǒng))想要訪問預(yù)期駐留在底層存儲(chǔ)中的數(shù)據(jù)時(shí),它都會(huì)首先檢查緩存。如果可以找到帶有適合必要數(shù)據(jù)的標(biāo)簽的條目,則改用該條目的數(shù)據(jù)。這稱為緩存命中。
例如,網(wǎng)絡(luò)瀏覽器可能會(huì)檢查其在光盤上的本地緩存,以查看其是否具有作為特定 URL 的網(wǎng)站資料的本地備份文件。在這種情況下,URL 地址就是標(biāo)簽,而網(wǎng)頁的內(nèi)容就是數(shù)據(jù)。緩存訪問導(dǎo)致緩存命中的比例稱為緩存的命中率或命中率。
緩存未命中是另一種情況,當(dāng)檢查緩存但未找到具有必要標(biāo)記的項(xiàng)目時(shí)會(huì)發(fā)生這種情況。這需要從備份存儲(chǔ)進(jìn)行更昂貴的數(shù)據(jù)訪問。下載所需數(shù)據(jù)后,通常將其存儲(chǔ)在緩存中以備將來使用。
在高速緩存未命中時(shí),擦除當(dāng)前高速緩存記錄以為新獲得的數(shù)據(jù)創(chuàng)建空間。替換策略是指用于確定替換哪個(gè)條目的試探法。一種常見的替換策略,“最近最少使用 (LRU)”,將最早的條目替換為最近最少訪問的條目。
高效的緩存算法根據(jù)緩存材料的數(shù)量以及緩存和備份存儲(chǔ)的延遲和資源利用率來計(jì)算使用命中率。
緩存的重要性
許多軟件工程師認(rèn)為緩存是使事情變得更快的唯一方法。簡(jiǎn)單的說,當(dāng)你想取回代價(jià)高昂的數(shù)據(jù)時(shí),只要把它緩存起來,這樣下次你查找它的時(shí)候,它就不會(huì)那么昂貴了。讓我們理解為什么。
1. 更好的性能
緩存的主要優(yōu)點(diǎn)是它提高了系統(tǒng)的性能。通過保存網(wǎng)站文件數(shù)據(jù)的緩存版本,您的瀏覽器只需下載一次內(nèi)容,并可以在以后訪問時(shí)重新加載文件。
2.離線訪問
為了提高速度,應(yīng)用程序緩存以前和經(jīng)常使用的數(shù)據(jù)。如前所述,這不僅使事情運(yùn)行得更快,而且在某些情況下,它還使應(yīng)用程序能夠“離線”運(yùn)行。例如,如果您沒有互聯(lián)網(wǎng)連接,應(yīng)用程序可能會(huì)使用緩存數(shù)據(jù)繼續(xù)運(yùn)行。
3. 應(yīng)用效率
下載一次文件非常高效。文件的緩存版本可防止應(yīng)用程序因兩次訪問而浪費(fèi)時(shí)間、電池壽命以及其他資產(chǎn)。相反,應(yīng)用程序只需要下載更新的或新添加的文件。
4.網(wǎng)絡(luò)效率
緩存通過減少請(qǐng)求和傳遞信息所需的“行程”次數(shù)來促進(jìn)更有效地使用網(wǎng)絡(luò)帶寬。這種影響可能會(huì)顯著減少對(duì)基礎(chǔ)設(shè)施重復(fù)部署的需求,從而為整個(gè)互聯(lián)網(wǎng)生態(tài)系統(tǒng)帶來可觀的成本節(jié)約和經(jīng)濟(jì)優(yōu)勢(shì)。此外,商業(yè)緩存提供商可能會(huì)大規(guī)模運(yùn)營(yíng),大量使用由多個(gè)客戶共享的節(jié)能IT 基礎(chǔ)設(shè)施。
5. 更好的服務(wù)質(zhì)量 (QoS)
緩存服務(wù)的可用性降低了開發(fā)內(nèi)容提供商(尤其是推出新服務(wù)的 SMB)的準(zhǔn)入門檻,并使這些企業(yè)能夠創(chuàng)建新穎的消費(fèi)者服務(wù)。緩存使新興和新的內(nèi)容提供商能夠在產(chǎn)品/服務(wù)發(fā)布時(shí)提供具有高質(zhì)量服務(wù) (QoS) 的積極用戶體驗(yàn),而無需進(jìn)行昂貴的基礎(chǔ)設(shè)施投資,從而使這些公司能夠與老牌玩家競(jìng)爭(zhēng)。
關(guān)鍵詞: 什么是緩存 緩存如何工作 緩存的重要性 緩存應(yīng)用