我是一个 php 爱好者,我正在开发一个新的文章系统。我已经创建了一个处理简单数据库操作的类。此类每次启动时都会检索表名和自动递增字段,以创建与数据库表匹配的对象。所以当我在我的文章系统上工作时,我检查了我的数据库类生成的查询日志,我注意到一个简单的页面上有 35 个查询。
现在我做了一个小缓存类:
<?php
namespace library;
class cache {
private static $instance;
public $arDBFields = array ();
public $arAIFields = array ();
public $arQueryResults = array ();
public static function get() {
if(! self::$instance){
self::$instance = new self ();
}
return self::$instance;
}
public function setDBFields($name, $value) {
$this->arDBFields [$name] [] = $value;
}
public function getDBFields($name) {
if(! empty ( $this->arDBFields [$name] ))
return $this->arDBFields [$name];
return array ();
}
public function setAIField($name, $value) {
$this->arAIFields [$name] = $value;
}
public function getAIField($name) {
if(! empty ( $this->arAIFields [$name] ))
return $this->arAIFields [$name];
return array ();
}
public function setQueryResult($name, $cacheshit) {
$this->arQueryResults [$name] = $cacheshit;
}
public function getQueryResult($name) {
if(! empty ( $this->arQueryResults [$name] ))
return $this->arQueryResults [$name];
return array ();
}
}
?>
在我的mysql类中我添加了这个:
if(!empty($cachedValue)){
$this->query = $cachedValue ;
}
else {
$this->query = mysql_query ($sql , $this->connection);
cache::get()->setQueryResult($sql, $this->query);
}
如果 $cachedvalue 不为空,它也会跳过写入查询日志数组
现在我的查询日志显示此页面的 6 个查询,这是该页面必须使用的最低限度。
我的问题是,这样做是好事还是有更好的方法来减少查询?