Como desativar completamente o cache?


26

Estou desenvolvendo um site no Drupal 7 e o cache torna meu trabalho significativamente mais lento. Por exemplo, eu tinha uma função de tema para um formulário. Fiquei intrigado, por que não funciona. Até que eu limpei o cache e ele foi corrigido.

Como desligá-lo completamente?

Respostas:


21

As funções de tema são tratadas pelo registro do tema: reconstruir (ou pior, desabilitar) todos os caches do seu site para selecionar uma nova função de tema é desnecessário e exagerado.

O que você pode fazer é usar o módulo Devel para reconstruir o registro do seu tema a cada recarga de página. Depois de instalado, vá para Configuração → Desenvolvimento → Configurações do Devel. Lá, marque "Reconstruir o registro do tema em cada carregamento de página" e pressione o botão "Salvar configuração". Lembre-se de desmarcar (ou, melhor ainda, desativar o Devel inteiramente) quando terminar o desenvolvimento.


esse é apenas o registro do tema.
Andrew Welch

2
A pergunta é "Como desligá-lo completamente?" esta é apenas uma parte dele
SeanJA 17/17

29

Você pode substituir o back-end do cache padrão por outro que não faça nada. Basta adicionar isso ao seu arquivo settings.php:

if (!class_exists('DrupalFakeCache')) {
  $conf['cache_backends'][] = 'includes/cache-install.inc';
}
// Default to throwing away cache data.
$conf['cache_default_class'] = 'DrupalFakeCache';
// Rely on the DB cache for form caching - otherwise forms fail.
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

Apenas para ter certeza, defina o tempo de expiração do cache como nenhum na página Desempenho.

Na verdade, eu uso isso em um arquivo settings.local.php que, se existir, é incluído na parte inferior do meu arquivo settings.php para que eu possa sincronizar o settings.php dos ambientes ao vivo ou de preparação para o meu ambiente de desenvolvimento sem ter que se preocupar sobre o uso de configurações incorretas do banco de dados, pressionando acidentalmente as configurações de desenvolvimento, etc.

settings.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}

4
Você pode usar o mesmo truque para desativar o cache por compartimento. Por exemplo. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
Alfred Armstrong

4
Esta deve ser a resposta aceita, como aquele aceitos somente descreve como desativar o cache de registro tema e nem todos os caches
mastazi

10

Você não pode desativar todo o cache completamente. E se você realmente fez, seria retardar o seu progresso de modo muito mais. Considere o tempo que leva para limpar o cache, é assim que seria o carregamento de cada página.

Existem tantos ganchos em execução para criar informações sobre as entidades, campos, formulários, ganchos implementados, etc., que precisam ser executados apenas uma vez no momento, e você não deseja impedir isso.

Ao se acostumar com o Drupal, você aprenderá em breve o que exige limpeza de cache e provavelmente se familiarizará com o atalho dos menus do administrador ou drush cc all, e isso não será mais um problema.


Concordado, uma vez que você percebe que a maioria dos novos ganchos precisa de um cache limpo antes de ser reconhecida sua navegação suave a partir daí! :)
Alex Weber

2
Honestamente, depois de alguns meses de desenvolvimento do Drupal, ainda acho que isso é um problema. Acredito que, embora o desenvolvimento da velocidade local não seja importante, você não tem vários usuários enviando solicitações simultâneas. Na maioria dos outros frameworks (Django, Symfony etc), ter o cache desativado durante o desenvolvimento local é uma opção prontamente disponível, não vejo por que não posso ter isso no Drupal também. Todos os dias, tenho pelo menos uma instância em que algo não está funcionando e o motivo é que esqueci de limpar o cache, isso acontece com muita frequência e realmente me incomoda.
mastazi

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.