2013/11/22工作隨筆-快取是放在Model層還是放在Controller層

軒脈刃發表於2016-05-17

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對快取這層做直接控制的。


相關文章