目前我在基于 mvc 的站点中使用 php 和 apc,它是一个自定义构建的简单 mvc,所以我正在尝试构建它以满足我的需求。
但是我不确定处理缓存的首选位置在哪里?
我有两个选择(我认为)..要么在各种控制器中进行所有缓存,这意味着对象存储在缓存中,要么将查询返回的数据存储在方法内部的缓存中:
控制器示例:
function showPage() {
$pageOb = new Page();
$key = md5('pageOb->getQuery()');
if(!$data = apc_fetch($key)){
$data = $pageOb->getQuery();
apc_add($key, $data, 600);
}
require 'template.php';
}
方法示例:
function getQuery(){
$sql = "SELECT * FROM table";
$key = md5('query'.$sql);
if(!$data = apc_fetch($key)){
$core = Connect::getInstance();
$stmt = $core->dbh->prepare($sql);
$stmt->execute();
$data = $stmt->fetchAll();
apc_add($key, $data, 600);
}
return $data;
}