0

我是一个 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 个查询,这是该页面必须使用的最低限度。

我的问题是,这样做是好事还是有更好的方法来减少查询?

4

2 回答 2

0

缓存是一件好事,尤其是在您的内容不经常更改的情况下。事实上,许多 PHP 框架会为您执行此操作。

于 2013-07-01T20:20:52.937 回答
0

如果您使用的是 Windows/IIS 环境,那么您可以安装 WinCache 并利用 User Cache 选项将经常访问的数据存储在内存中,因此对多页请求有好处(取决于您设置 TTL 的时间长短) . 安装 WinCache 非常简单,也可以让你的代码运行得更快,因为它的基本功能是缓存 OPCode,因此 PHP 不必为每个请求创建 OPCode。

WinCache 是我的经验,但我确信大多数 Web 服务器应用程序(Apache、IIS 等)都有类似的东西(APC 在 Apache 上很流行)。

http://www.iis.net/downloads/microsoft/wincache-extension

直接回答你的问题。编写自己的缓存代码将有助于更好地理解 PHP,我认为这是一件好事。但是,为了获得最大的收益,您可能应该集成现有的缓存机制并围绕它编写代码。

于 2013-07-01T20:20:57.473 回答