Web開發中的三種快取模式對頁面訪問速度影響和分析

2021-06-05 12:46:01 字數 1303 閱讀 3296

web程式效能優化有多個方面,比如sql優化、集群、負載均衡、購買更強悍的硬體、採用快取框架等等辦法。但是快取框架就有很多種:頁面靜態化、jsp頁面快取、後台方法快取、orm查詢結果快取、資料庫快取、快取伺服器等。

在這裡我對無任何快取、快取後台方法、快取jsp頁面、頁面靜態化這四種方式,接著用壓力測試分析工具進行100次請求對比,並求平均響應速度:

1、無任何快取

100次請求平均響應時間是10929毫秒

2、快取後台方法

100次請求平均響應時間是783毫秒

3、快取jsp頁面

100次請求平均響應時間是15毫秒

4、htm靜態化

100次請求平均響應時間1毫秒

以上測試資料不一定絕對精確,但有部分的代表性,這樣我們可以根據測試結果來選擇我們的快取技術。

測試1結論:沒有採用快取技術是如此滴悲劇呀~

測試2測試結論:快取後台方法(使用memercache**快取),忽略了資料庫查詢的效能,值所以還需要783毫秒主要效能在結果集輸出到jsp裡花費了大量時間,如果是freemark輸出,可能效率會稍微高一些吧。

測試3結論:忽略了資料庫查詢、忽略了後台輸出資料到jsp的時間,已經很接近頁面靜態化了效能了,

測試4結論:還是頁面靜態化速度最快呀!

總結:

有快取比無快取差距真的好大!測試3由於這裡使用ehcache快取jsp頁面,相當於是記憶體級的快取,理論上應該是比htm靜態化速度快,為何實際上比html靜態化頁面速度慢呢? 我們學過作業系統理論,計算機訪問速度從快到慢是  暫存器->記憶體->硬碟->資料庫,其它的快取記憶體、緩衝技術都是介於這幾項之間。個人認為之所以出現「記憶體快取」比「硬碟快取」慢有幾個原因:

1 apache解析靜態化頁面比jsp/servlet容器速度快,

2 servlet需要若干個過濾、攔截、安全、編碼等過濾機制等框架特性越來越多,會導致一些方法呼叫上的效能開銷

3 現在的硬碟快取記憶體做的比較牛,記憶體和硬碟快取記憶體的差距越來越小,有時候公升級硬體配置,也是提高效能的乙個手段

4 相當於靜態化造成的大量占用系統磁碟、資料更新、無效資料刪除問題。選擇jsp+後台方法快取、搭建乙個memercache**快取伺服器(我的設定了30g記憶體的快取容量)可以做到很接近於靜態化頁面的技術方案,並能配置監聽修改的資料之後重新整理快取資料註解,無須擔心資料實時性的問題。這種技術可以作為不喜歡搞頁面靜態化的人的一種解決方案。

主意事項:請勿嚴格拿以上的資料做乙個速度上的對比,比如xx技術是yy技術的幾倍這種比較,場景比一樣、業務不一樣,很難有乙個精確的資料,但根據壓力測試得出來資料的大小,至少能說明哪個快取技術更適合您!

三種快取模式(Cache Pattern)

cup和記憶體資料交換的效率不高,這是指令流水線式處理器的瓶頸之一。我們可以通過儲存層次 memory hierarchy 的方式來解決這個問題。這個儲存層次內有 1 容量小的 高速的快取 2 容量較大的 慢一點記憶體 3 容量很大的 但很慢的硬碟 2 檢查記憶體 main memory 如果a在主...

EF開發三種模式

入門的參考資料 本篇的參考資料 教程說的很明白,雖然聽不太懂,不過也能看懂 我該用哪個工作流?換句話說,也就是使用ef有哪幾種方式,哪種方式更適合你,更適合你當前要開發的專案。一 該不該使用ef 這個問題很複雜,個人認為,大中型專案,不宜使用ef。中小型專案,可以使用ef。二 使用ef的三種方式 1...

APP三種開發模式

優點 應用的效能好,適配起來相對容易 缺點 1 無法跨平台 android和ios都需要開發各自平台的版本 開發成本高 3 android和ios很難同步發布。一篇不錯的文章 缺點 頁面訪問速度慢 操作體驗差 優點 成本低,開發難度低 原生功能體驗 優秀接近優秀差效能 非常快快 慢跨平台開發成本 昂...