2013/11/22工作随笔-缓存是放在Model层还是放在Controller层
2013-11-22 20:25
337 查看
web网站的典型代码框架就是MVC架构,Model层负责数据获取,Controller层负责逻辑控制,View层则负责展示。
一般数据获取是去mysql中获取数据
但是这里有个问题,我们不会每次请求都去mysql中获取,当并发量大的时候,我们希望mysql前面有层缓存做着。
这层缓存可能是redis,memcache,File等,但是这个逻辑代码是放在Controller中好还是Model中好呢?
不好处:每个controller需要写一份几乎一模一样的代码,很繁琐。即使你写一个公共的方法,那也要在各个地方写上这个公共方法,属于重复工作了。
不好处:没法对单个controller进行控制了,controller失去了对缓存的控制权。
一般数据获取是去mysql中获取数据
但是这里有个问题,我们不会每次请求都去mysql中获取,当并发量大的时候,我们希望mysql前面有层缓存做着。
这层缓存可能是redis,memcache,File等,但是这个逻辑代码是放在Controller中好还是Model中好呢?
放在Controller中:
好处:可以单个Controller进行控制,每个controller中有各自对数据的键,以及缓存时间等。不好处:每个controller需要写一份几乎一模一样的代码,很繁琐。即使你写一个公共的方法,那也要在各个地方写上这个公共方法,属于重复工作了。
放在Model中:
好处:统一管理,复用性高,controller层不需要理会数据是从缓存中获取还是从mysql中获取,controller完全解放出来了。不好处:没法对单个controller进行控制了,controller失去了对缓存的控制权。
观点:
我强烈建议放在Model中,因为一般的web是不会controller对缓存这层做直接控制的。相关文章推荐
- 01背包(动规)
- 三维扫描仪
- hibernate中Query的用法
- 编程乐趣:C#实现读取12306余票信息
- 响应式的dribbble作品集魔术布局展示效果
- 工作学习笔记(一)
- WSAGetLastError()部分常见返回值
- The Primes
- 利用ssh传输文件 上传 下载
- Python中的sqlite模块无法导入的解决方案
- 清华大学出版社 《数据结构》 学生评价满意度96%,欢迎多提宝贵意见
- struts2 jsp页面提交时,命名空间重复出现
- SQL 模糊查询【转】
- 字符、字符数组、char、string的区别
- (15)数组中出现次数超过一半的数字
- 【第六课:C++和opencv】图像的膨胀
- Python清屏方法
- 买房注意点
- ??????
- 北京优视