2013/11/22工作隨筆-快取是放在Model層還是放在Controller層
web網站的典型程式碼框架就是MVC架構,Model層負責資料獲取,Controller層負責邏輯控制,View層則負責展示。
一般資料獲取是去mysql中獲取資料
但是這裡有個問題,我們不會每次請求都去mysql中獲取,當併發量大的時候,我們希望mysql前面有層快取做著。
這層快取可能是redis,memcache,File等,但是這個邏輯程式碼是放在Controller中好還是Model中好呢?
放在Controller中:
好處:可以單個Controller進行控制,每個controller中有各自對資料的鍵,以及快取時間等。
不好處:每個controller需要寫一份幾乎一模一樣的程式碼,很繁瑣。即使你寫一個公共的方法,那也要在各個地方寫上這個公共方法,屬於重複工作了。
放在Model中:
好處:統一管理,複用性高,controller層不需要理會資料是從快取中獲取還是從mysql中獲取,controller完全解放出來了。
不好處:沒法對單個controller進行控制了,controller失去了對快取的控制權。
觀點:
我強烈建議放在Model中,因為一般的web是不會controller對快取這層做直接控制的。
相關文章
- 請問一下:這種實現應該放在EJB層還是WEB層Web
- 快取資料應放在HTTPSession中,還是在Session Bean?快取HTTPSessionBean
- JS檔案放在頭還是尾JS
- 網路是七層、五層還是四層?
- Service 層異常拋到 Controller 層處理還是直接處理?Controller
- 確定按鈕該放在左邊還是右邊?
- Redis不僅僅是快取,還是……Redis快取
- Java I/O底層是如何工作的?Java
- 圖片存放在伺服器還是資料庫裡的解釋?伺服器資料庫
- Controller層Controller
- 工作筆記還是蠻有用筆記
- 優化MySQL,還是使用快取?優化MySql快取
- 優化MySQL 還是使用快取?優化MySql快取
- 快取,究竟是淘汰,還是修改?快取
- 強人工智慧基本問題:神經網路分層還是不分層人工智慧神經網路
- 沒頭沒尾--專案開發筆記:先開發UI層還是先開發BusinessRules層!!?? (轉)筆記UI
- const放在函式前和放在函式後函式
- 究竟先操作快取,還是資料庫?快取資料庫
- 你管這破玩意叫快取穿透?還是快取擊穿?快取穿透
- dao層 和controllerController
- JAVA中Action層, Service層 ,model層 和 Dao層的功能區分Java
- Redis快取篇(一)Redis是如何工作的Redis快取
- 到底是先更新資料庫還是先更新快取?資料庫快取
- Kafka Network層解析,還是有人把它說清楚了Kafka
- 軟體開發重點放在重用上是錯誤的 - Grady
- Linux最底層是封閉的 確有其事還是專家出錯?Linux
- java自動生成實體類(帶註釋)和controller層,service層 dao層 xml層JavaControllerXML
- 本文雖然不是laravel相關的技術部落格,但是我還是放在了laravel下。與君共勉Laravel
- 業務邏輯層快取應該設計快取
- 健康還是工作,這是個問題
- 運維人員的三種層次:看看你是背鍋俠,還是閃修俠?運維
- 快取穿透、快取雪崩和快取擊穿是什麼?快取穿透
- 什麼是redis快取雪崩、快取穿透、快取擊穿Redis快取穿透
- 三層架構是什麼意思 ?架構
- 努力工作還是快樂的工作?——高效率員工的祕密
- Cloudflare更智慧的分層快取拓撲生成Cloud快取
- 快取和web快取分別是什麼?快取Web
- 快取架構設計細節二三事--究竟先操作快取,還是資料庫?快取架構資料庫