摘要:瀏覽器緩存根據(jù)一套與服務(wù)器約定的規(guī)則進(jìn)行工作檢查確定副本是否最新,通常只要一次會(huì)話。數(shù)據(jù)庫緩存是一類特殊的緩存,是數(shù)據(jù)庫自身的緩存機(jī)制。存儲(chǔ)成本當(dāng),系統(tǒng)會(huì)從數(shù)據(jù)庫或者其他數(shù)據(jù)源取出數(shù)據(jù),然后放入存儲(chǔ),這個(gè)過程需要時(shí)間和空間,這就是緩存成本。
什么是緩存
存儲(chǔ)在計(jì)算機(jī)上的一個(gè)原始數(shù)據(jù)復(fù)制集,以便于訪問。 --維基百科
緩存是系統(tǒng)快速響應(yīng)中的一種關(guān)鍵技術(shù),是一組被保存起來以備將來使用的東西,介于應(yīng)用開發(fā)跟系統(tǒng)開發(fā)之間。
根據(jù)軟件系統(tǒng)中所處位置的不同,緩存大體可以分為三類:
客戶端緩存
服務(wù)器緩存
網(wǎng)絡(luò)中的緩存
根據(jù)規(guī)模和部署方式緩存也可以分為:
單體緩存
緩存集群
分布式緩存
客戶端緩存頁面緩存:
頁面自身的緩存或者離線應(yīng)用緩存,頁面自身對某些元素或全部元素進(jìn)行緩存,或服務(wù)端將靜態(tài)頁面或動(dòng)態(tài)頁面的元素進(jìn)行緩存。
頁面緩存是將之前渲染的頁面保存為文件,當(dāng)用戶再次訪問時(shí)可以避開網(wǎng)絡(luò)連接,從而減少負(fù)載,提升性能和用戶體驗(yàn)。
瀏覽器緩存:
根據(jù)一套與服務(wù)器約定的規(guī)則進(jìn)行工作:檢查確定副本是否最新,通常只要一次會(huì)話。
補(bǔ)充------
app緩存
網(wǎng)絡(luò)中的緩存web代理緩存
邊緣緩存
服務(wù)端緩存數(shù)據(jù)庫緩存
數(shù)據(jù)庫屬于IO密集型的應(yīng)用,主要負(fù)責(zé)數(shù)據(jù)的管理及存儲(chǔ)。數(shù)據(jù)庫緩存是一類特殊的緩存,是數(shù)據(jù)庫自身的緩存機(jī)制。
以mysql為例,mysql中使用了查詢緩沖機(jī)制,將SELECT語句和查詢結(jié)果存放在緩沖區(qū)中,以后對于同樣的SELECT語句,講直接從緩存區(qū)中讀取結(jié)果,以節(jié)省查詢時(shí)間,提高了sql查詢的效率。
平臺(tái)級(jí)緩存
在系統(tǒng)開發(fā)中,適當(dāng)?shù)氖褂闷脚_(tái)級(jí)緩存往往可以取得事半功倍的效果。
在這里指用來寫帶有緩存特性的應(yīng)用框架,或者可用于緩存功能的專用庫。
應(yīng)用級(jí)緩存當(dāng)平臺(tái)級(jí)緩存不能滿足系統(tǒng)性能要求時(shí),就要考慮使用應(yīng)用級(jí)緩存了。應(yīng)用級(jí)緩存,需要開發(fā)者通過代碼來實(shí)現(xiàn)緩存機(jī)制,這里是nosql的勝場,無論是Redis還是MongoDB,以及Memcached都可以作為應(yīng)用級(jí)存儲(chǔ)的重要技術(shù)。
緩存算法:在實(shí)現(xiàn)緩存應(yīng)用的時(shí)候,需要了解緩存技術(shù)中的幾個(gè)術(shù)語。
緩存命中:請求的數(shù)據(jù)在緩存中。
沒有命中:cache miss,如果緩存中還有存儲(chǔ)空間,那么沒有命中的對象會(huì)被儲(chǔ)存到緩存中來。
存儲(chǔ)成本:當(dāng)cache miss,系統(tǒng)會(huì)從數(shù)據(jù)庫或者其他數(shù)據(jù)源取出數(shù)據(jù),然后放入存儲(chǔ),這個(gè)過程需要時(shí)間和空間,這就是緩存成本。
緩存失效:當(dāng)存儲(chǔ)在緩存中的數(shù)據(jù)需要更新時(shí),就以為著緩存中的這一數(shù)據(jù)失效了。
替代策略:當(dāng)緩存沒有命中時(shí),并且緩存容量已經(jīng)滿了,就需要在緩存中去除一條舊數(shù)據(jù),然后加入一條新數(shù)據(jù),替代的選擇就有替代策略決定。
Least-Recently-Used(LRU):最近被請求最少的對象
Least-Frequently-Used(LFU):訪問次數(shù)最少的對象
SIZE:占用空間最大的對象
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/62019.html
摘要:多線程編程這篇文章分析了多線程的優(yōu)缺點(diǎn),如何創(chuàng)建多線程,分享了線程安全和線程通信線程池等等一些知識(shí)。 中間件技術(shù)入門教程 中間件技術(shù)入門教程,本博客介紹了 ESB、MQ、JMS 的一些知識(shí)... SpringBoot 多數(shù)據(jù)源 SpringBoot 使用主從數(shù)據(jù)源 簡易的后臺(tái)管理權(quán)限設(shè)計(jì) 從零開始搭建自己權(quán)限管理框架 Docker 多步構(gòu)建更小的 Java 鏡像 Docker Jav...
摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
閱讀 1790·2021-11-24 09:39
閱讀 1711·2021-11-22 15:22
閱讀 1034·2021-09-27 13:36
閱讀 3332·2021-09-24 10:34
閱讀 3365·2021-07-26 23:38
閱讀 2656·2019-08-29 16:44
閱讀 996·2019-08-29 16:39
閱讀 1133·2019-08-29 16:20