以下是我从数据库获取数据的方式。它是一个3级层次结构。父母,孩子和孩子的孩子。
page_id | parent_id
1 0
2 1
3 0
4 3
顶部数据显示0为父级。
$id = 0;
public function getHierarchy($id)
{
$Pages = new Pages();
$arr = array();
$result = $Pages->getParent($id);
foreach($result as $p){
$arr[] = array(
'title' => $p['title'],
'children' => $this->getHierarchy($p['page_id']),
);
}
return $arr;
}
到目前为止,我正在获取数据,但它有点慢。浏览器在显示数据之前加载了很长时间。如何让我的代码更快,以便浏览器加载数据不需要很长时间?
感谢。
答案 0 :(得分:1)
您有多种方法可以加快速度:
缓存示例:
您可以使用普通文件进行缓存,也可以使用memcache,memcached或apc等专用API。 通常你有一个有3种基本方法的课程。界面可能如下所示:
interface ICache
{
public function get($key);
public function set($key, $value, $lifetime = false);
public function delete($key);
}
您可以像以下一样使用它:
public function getHierarchy($id)
{
$cached = $this->cache->get($id);
if (false !== $cached) {
return $cached;
}
// run another method where you build the tree ($arr)
$this->cache->set($id, $arr, 3600);
return $arr;
}
在示例中,树将缓存一小时。如果将另一个项目插入数据库,也可以设置无限生命周期并删除密钥。