Configurando o cache de esquema

December 5, 2025 · View on GitHub

As informações sobre o esquema do banco de dados necessário para o ORM vêm de Schema que o recupera do servidor de banco de dados.

Para acesso mais rápido, Schema armazena as informações de esquema do banco de dados em SchemaCache.

Quando o Schema precisa recuperar informações sobre o esquema do banco de dados, primeiro ele verifica o cache.

Você pode configurar SchemaCache para usar a Implementação de cache PSR-16 de duas maneiras:

  • Usar a ligação automática do contêiner DI.
  • Configurá-lo manualmente.

Os exemplos abaixo usam yiisoft/cache. Certifique-se de tê-lo instalado via Composer usando composer require yiisoft/cache.

Cache PSR-16 com conexão automática

Esta configuração é adequada se você quiser usar o mesmo driver de cache para todo o aplicativo.

Crie um arquivo config/common/di/cache.php para cache:

use Psr\SimpleCache\CacheInterface;
use Yiisoft\Cache\File\FileCache;

/** @var array $params */

return [
    CacheInterface::class => [
        'class' => FileCache::class,
        '__construct()' => [
            'cachePath' => __DIR__ . '/../../runtime/cache',
        ],
    ],
];

O SchemaCache requer CacheInterface e o contêiner DI irá resolvê-lo automaticamente.

Configuração manual de cache

Esta configuração é adequada se você quiser usar um driver de cache diferente para o esquema de cache.

Crie um arquivo config/common/di/db-schema-cache.php para cache:

use Yiisoft\Cache\File\FileCache;
use Yiisoft\Db\Cache\SchemaCache;

return [
    SchemaCache::class => [
        'class' => SchemaCache::class,
        '__construct()' => [
            new FileCache(__DIR__ . '/../../runtime/cache'),
        ],
    ],
];

Desabilitando o cache de esquema

Você pode desabilitar o cache de esquema definindo o parâmetro enabled como false no arquivo config/params.php da sua aplicação:

return [
    // ...
    'yiisoft/db' => [
        'schema-cache' => [
            'enabled' => false,
        ],
    ],
];

Este parâmetro é automaticamente conectado ao serviço SchemaCache através da configuração de DI do pacote.