【发布时间】:2011-02-24 07:35:22
【问题描述】:
我正在考虑在哪里实现缓存部分。您认为在哪里实施它最合适?
在每个模型中,还是在控制器中?
方法1(伪代码):
// mycontroller.php
MyController extends Controller_class {
function index () {
$data = $this->model->getData();
echo $data;
}
}
// myModel.php
MyModel extends Model_Class{
function getData() {
$data = memcached->get('data');
if (!$data) {
$query->SQL_QUERY("Do query!");
}
return $data;
}
}
方法二:
// mycontroller.php
MyController extends Controller_class {
function index () {
$dataArray = $this->memcached->getMulti('data','data2');
foreach ($dataArray as $key) {
if (!$key) {
$data = $this->model->getData();
$this->memcached->set($key, $data);
}
}
echo $data;
}
}
// myModel.php
MyModel extends Model_Class{
function getData() {
$query->SQL_QUERY("Do query!");
return $data;
}
}
想法:
方法一:
没有多重获取/多重设置。如果会返回大量的键,则会产生开销。
更易于维护,所有数据库/缓存处理都在每个模型中
方法二:
更好的性能 - 使用 multiset/multiget
需要更多代码
更难维护
告诉我你的想法!
【问题讨论】:
标签: php performance caching scalability memcached