原來這就是java的快取技術,你知道嗎?

2021-08-15 00:10:10 字數 2422 閱讀 1658

一、什麼是快取

1、cache是高速緩衝儲存器 一種特殊的儲存器子系統,其中複製了頻繁使用的資料以利於快速訪問

2、凡是位於速度相差較大的兩種硬體/軟體之間的,用於協調兩者資料傳輸速度差異的結構,均可稱之為 cache

二、快取的分類

1、基於web應用的系統架構圖

2、在系統架構的不同層級之間,為了加快訪問速度,都可以存在快取

作業系統磁碟快取->減少磁碟機械操作

資料庫快取->減少檔案系統i/o

應用程式快取->減少對資料庫的查詢

web伺服器快取->減少應用伺服器請求

客戶端瀏覽器快取->減少對**的訪問

三、作業系統快取

1、檔案系統提供的disk cache:作業系統會把經常訪問到的檔案內容放入到記憶體當中,由檔案系統來管理

2、當應用程式通過檔案系統訪問磁碟檔案的時候,作業系統從disk cache當中讀取檔案內容,加速了檔案讀取速度

3、disk cache由作業系統來自動管理,一般不用人工干預,但應當保證物理記憶體充足,以便於作業系統可以使用盡量多的記憶體充當disk cache,加速檔案讀取速度

4、特殊的應用程式對檔案系統disk cache有很高的要求,會繞開檔案系統disk cache,直接訪問磁碟分割槽,自己實現disk

5、cache策略

oracle的raw device(裸裝置) – 直接拋棄檔案系統

mysql的innodb: innodb_flush_method = o_direct

四、資料庫快取

1、重要性

資料庫通常是企業應用系統最核心的部分

資料庫儲存的資料量通常非常龐大

資料庫查詢操作通常很頻繁,有時還很複雜

以上原因造成資料庫查詢會引起非常頻繁的磁碟i/o讀取操作,迫使cpu掛起等待,資料庫效能極度低下

2、快取策略

a、query cache

以sql作為key值快取查詢結果集

一旦查詢涉及的表記錄被修改,快取就會被自動刪除

設定合適的query cache會極大提高資料庫效能

query cache並非越大越好,過大的qquery cache會浪費記憶體。

mysql: query_cache_size= 128m

b、data buffer

data buffer是資料庫資料在記憶體中的容器

data buffer的命中率直接決定了資料庫的效能

data buffer越大越好,多多益善

mysql的innodb buffer:innodb_buffer_pool_size = 2g

mysql建議buffer pool開大到伺服器物理記憶體60-80%

五、應用程式快取

1、物件快取

對資料庫查詢結果集進行快取,類似資料庫的query cache

適用於一些耗時,但是時效性要求比較低的場景。查詢快取和物件快取適用的場景不一樣,是互為補充的

當查詢結果集涉及的表記錄被修改以後,需要注意清理快取

3、頁面快取

a、作用

針對頁面的快取技術不但可以減輕資料庫伺服器壓力,還可以減輕應用伺服器壓力

好的頁面快取可以極大提高頁面渲染速度

頁面快取的難點在於如何清理過期的快取

b、分類

i、動態頁面靜態化

利用模板技術將訪問過一次的動態頁面生成靜態html,同時修改頁面鏈結,下一次請求直接訪問靜態鏈結頁面

動態頁面靜態化技術的廣泛應用於網際網路cms/新聞類web應用,但也有bbs應用使用該技術,例如discuz!

無法進行許可權驗證,無法顯示個性化資訊

可以使用ajax請求彌補動態頁面靜態化的某些缺點

ii、servlet快取

針對url訪問返回的頁面結果進行快取,適用於粗粒度的頁面快取,例如新聞發布

可以進行許可權的檢查

oscache提供了簡單的servlet快取(通過web.xml中的配置)

也可以自己程式設計實現servlet快取

iii、頁面內部快取

針對動態頁面的區域性片斷內容進行快取,適用於一些個性化但不經常更新的頁面(例如部落格)

oscache提供了簡單的頁面快取

可以自行擴充套件jsp tag實現頁面區域性快取

六、web伺服器端快取

基於**伺服器模式的web伺服器端快取,如squid/nginx

web伺服器快取技術被用來實現cdn(內容分發網路 content delivery network)

被國內主流門戶**大量採用

不需要程式設計,但僅限於新聞發布類**,頁面實時性要求不高

七、基於ajax的瀏覽器快取

使用ajax呼叫的時候,將資料庫在瀏覽器端快取

只要不離開當前頁面,不重新整理當前頁面,就可以直接讀取快取資料

只適用於使用ajax技術的頁面

原來這就是傳說中的愛情!!

真愛無悔 如果你在一生裡遇見了你心愛的人,可以說你是幸運的,無論結局怎樣,都可以說是幸福的吧?白頭到老,固然很好,如果分手了,或者為愛情而傷心,也都是很幸福,畢竟你愛過,你為了愛情在落淚,為了愛情在心碎,曾經很浪漫過,兩個人可以在冬天的風下瘋狂,在夏天的雨下漫步,即使當初的戀人已經遠去但戀愛時的浪漫...

java快取技術的介紹

一 什麼是快取 1 cache是高速緩衝儲存器 一種特殊的儲存器子系統,其中複製了頻繁使用的資料以利於快速訪問 2 凡是位於速度相差較大的兩種硬體 軟體之間的,用於協調兩者資料傳輸速度差異的結構,均可稱之為 cache 二 快取的分類 1 基於web應用的系統架構圖 2 在系統架構的不同層級之間,為...

java快取技術的介紹

一 什麼是快取 1 cache是高速緩衝儲存器 一種特殊的儲存器子系統,其中複製了頻繁使用的資料以利於快速訪問 2 凡是位於速度相差較大的兩種硬體 軟體之間的,用於協調兩者資料傳輸速度差異的結構,均可稱之為 cache 二 快取的分類 1 基於web應用的系統架構圖 2 在系統架構的不同層級之間,為...