Caching

Caching é uma maneira rápida e efetiva de aumentar a performances de aplicações Web. Ao armazenar em cache dados relativamente estáticos, e utiliza-lo quando esses dados forem requisitados, economizamos o tempo necessário para gerar esses dados.

A utilização de cache no Yii consiste em configurar e acessar um componente de cache. A configuração de aplicação exibida a seguir, especifica um componente de cache que utiliza memcache com dois servidores:

array(
    ......
    'components'=>array(
        ......
        'cache'=>array(
            'class'=>'system.caching.CMemCache',
            'servers'=>array(
                array('host'=>'server1', 'port'=>11211, 'weight'=>60),
                array('host'=>'server2', 'port'=>11211, 'weight'=>40),
            ),
        ),
    ),
);

Quando a aplicação está em execução, o componente pode ser acessado via: Yii::app()->cache.

O Yii fornece diversos componentes de cache que podem armazenar dados em diferentes meios. Por exemplo, o componente CMemCache encapsula a extensão memcache do PHP e utiliza a memória como meio para armazenar os dados; o componente CApcCache encapsula a extensão APC; e o componente CDbCache armazena os dados do cache em um banco de dados. Abaixo temos um resumo dos componentes de cache disponíveis:

Dica: Como todos os componentes de cache são derivados da classe CCache, você pode alterar entre diversos tipos de cache sem modificar o código que os utilizam.

O Caching pode ser utilizado em diferentes níveis. No mais baixo nível, podemos utilizar cache para armazenar pequenos dados, tal como uma variável. Chamamos isso de data caching (Caching de dados). No próximo nível, podemos utiliza-lo para armazenar fragmentos de uma página que é gerada por uma visão. No nível mais alto, armazenamos toda a página no cache e a servimos de la, quando necessário.

Nas próximas subseções, falaremos mais sobre como utilizar o cache nesses níveis.

Nota: Por definição, o cache é um meio de armazenamento volátil. Ele não garante a existência dos dados em cache, mesmo que eles não expirem. Portanto, não utilize cache como um meio de armazenamento persistente (por exemplo, não o utilize para armazenar dados da sessão.

$Id: caching.overview.txt 1315 2009-08-09 04:07:35Z qiang.xue $