本节对应书里的The cache component。
原文翻译整理如下:

要提高某些应用程序的性能,您需要缓存数据。 例如,我们可以缓存一个帖子的查询结果。 为什么? 想象1百万次浏览。 通常,您将查询数据库,但这将意味着100万个查询(如果使用ORM,可以查询至少可以翻三
倍,这意味着至少300万个查询)。 为什么? 当您查询时,ORM的操作如下所示:

  1. 它将查询information schema中是否存在要查询的表:
    SELECT IF(COUNT(*)>0, 1 , 0)  
    FROM `INFORMATION_SCHEMA `.`TABLES`
    WHERE `TABLE_NAME`='user'
  2. 执行列出表的结构:
    DESCRIBE `user`
  3. 是否执行实际的查询:
    SELECT * FROM user.
  4. 如果用户表具有关联表,则ORM将对每个关联执行刚才的步骤。

为了解决这个问题,我们将post对象保存到我们的缓存系统中。
就我而言,使用Redis和Igbinary。 Redis可能是最强大的工具,因为当它将数据存储在内存中,还会将数据保存在磁盘上以备冗余。 这意味着,每次您从缓存请求数据,您将从内存中获取它。 Igbinary
(https://pecl.php.net/package/igbinary)是标准php序列化程序的替代品。 这里是一个示例缓存服务:

<?php
$di['redis'] = function () {
$redis = new \Redis();
$redis- >connect(
'127.0.0.1',
6379
);
return $redis;
};
$di ['cache'] = function () use ($di, $config) {
$frontend = new \Phalcon\Cache\Frontend\Igbinary (array(
'lifetime' => 86400
));
$cache = new \Phalcon\Cache\Backend \Redis($frontend, array(
'redis' => $di['redis'],
'prefix' => 'learning_phalcon'
));
return $cache;
};

cache(缓存)组件具有通常使用的以下方法:

<?php
// Save data in cache
$this-cache->save('post', array(
'title' => 'Learning Phalcon',
'slug' => 'learning-phalcon',
'content' => 'Article content'
));
// Get data from cache
$post = $this->cache->get('post');
// Delete data from cache
$this->cache->delete('post');

你可以访问官方文档 http://docs.phalconphp.com/en/latest/reference/cache.html 了解更多的关于cache组件的信息。

Summary
在本章中,我们安装了所需的软件,为Web服务器创建了配置文件,并且了解了一些有关Phalcon内部的知识。 在接下来的章节中,我们将通过示例来学习,一切都会更加清晰。
在进一步阅读之前,建议你花点时间先了解一些你没有经验的部分。
在下一章中,我们将讨论如何为我们的项目设置MVC结构和环境。

Related Posts: 零基础学Phalcon 13 session 组件 :