Existe um script drush para desativar todos os caches?


19

Quero dizer todas as opções de cache em admin / settings / performance. Eu freqüentemente uso o drush sql-sync para manter minha cópia de desenvolvimento atualizada com o servidor. No entanto, o servidor deve ter todos os caches ativados, obviamente.

Então, eu me pergunto: devo visitar admin / settings / performance toda vez que atualizar meu db? Ou existe um script Drush para isso?


1
apenas uma breve explicação: a resposta chx é a melhor, pois basta 'drush en cache_disable --yes'. O GApple chega muito perto, pois resolve o problema de uma vez por todas, embora possa prejudicar os novatos. doublejoice realmente propõe um script drush, e é uma resposta maravilhosa para minha pergunta, embora os outros dois sejam ainda melhores.
Capi Etheriel

Respostas:



17

Você precisa definir várias variáveis ​​para desativar o cache no site de desenvolvimento ...

 drush vset cache 0
 drush vset preprocess_css 0
 drush vset preprocess_js 0
 drush vset page_cache_maximum_age 0
 drush vset views_skip_cache TRUE

É ainda mais fácil se você tiver uma configuração condicional no seu arquivo settings.php. Então você pode atualizar o banco de dados e as alterações serão mantidas!

$conf['cache'] = 0; // Page cache $conf['page_cache_maximum_age'] = 0; // External cache TTL $conf['preprocess_css'] = FALSE; // Optimize css $conf['preprocess_js'] = FALSE; // Optimize javascript $conf['views_skip_cache'] = TRUE; // Views caching

... embora se você apenas desativar vários caches através da interface do usuário do administrador e limpar o cache uma vez, poderá sair do tema sem desligar o resto ... já que o script tem menos chances de mudar.


Você também pode excluir o arquivo settings.php do repositório seu empurrando código até a produção com e adicionar essas configurações ...$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
doublejosh

Mais recomendações ...$conf['cache'] = 0; $conf['page_cache_maximum_age'] = 0; $conf['block_cache'] = FALSE; $conf['preprocess_css'] = FALSE; $conf['preprocess_js'] = FALSE; $conf['views_skip_cache'] = TRUE;
doublejosh 20/02/2014

11

Você pode usar o arquivo settings.php para definir explicitamente variáveis ​​para substituir as configurações do banco de dados. Os valores serão bloqueados para o que estiver definido no arquivo e não poderão ser alterados através da interface de administração.
No final do arquivo padrão, há uma seção que começa:

/**
 * Variable overrides:
 *
 * To override specific entries in the 'variable' table for this site,
 * set them here. You usually don't need to use this feature. This is
 * useful in a configuration file for a vhost or directory, rather than
 * the default settings.php. Any configuration setting from the 'variable'
 * table can be given a new value. Note that any values you provide in
 * these variable overrides will not be modifiable from the Drupal
 * administration interface.
 *
 * Remove the leading hash signs to enable.
 */
# $conf = array(
#   'site_name' => 'My Drupal site',
#   'theme_default' => 'minnelli',
#   'anonymous' => 'Visitor',

Então, para página disable, JS, e cache CSS, conjunto cache, preprocess_jse preprocess_csstodos'0'

$conf = array(
  'cache' => '0',
  'preprocess_css' => '0',
  'preprocess_js' => '0',
);

O parêntese de fechamento da declaração da matriz é a última linha do arquivo padrão, depois de mais alguns blocos de comentários, portanto, remova o comentário lá em vez de adicionar um novo. Verifique também se você não possui outra $confdeclaração que entre em conflito.


2

Você sempre pode usar um arquivo de aliases drush no servidor dev e configurá-lo para ignorar as tabelas de cache ao executar o sql-sync. O seguinte criaria aliases para o servidor de desenvolvimento local e o servidor ativo remoto:

$aliases['dev'] = array(
    'root' => '/var/www/devroot',
);

$aliases['live'] = array(
    'root' => '/var/www/liveroot',
    'remote-host' => 'www.mysite.com',
    'remote-user' => 'exampleuser',
    'command-specific' => array (
       'sql-sync' => array (
         'skip-tables-list' => 'cache,cache_menu',
       ),
    ),
);

Se você salvou isso no seu diretório pessoal em:

~/.drush/mysite.aliases.drushrc.php

então você pode chamar seu comando sql-sync assim:

drush sql-sync @mysite.live @mysite.dev

e ele deve pular as tabelas de cache (obviamente, eu listei apenas 2 lá, mas você pode colocar qualquer coisa lá, até adiciono watchdog).

Para obter mais informações sobre aliases e todas as várias opções, consulte o arquivo de exemplo em sua instalação do drush em drush / examples / example.aliases.drushrc.php

Como última observação para quem tenta usar o sql-sync, tive problemas de autenticação quando o executei pela primeira vez; portanto, se alguém tentar isso e receber erros sobre chaves públicas / privadas, faça o seguinte:

drush dl drush_extras
drush pushkey @mysite.live
drush @mysite.live status

O comando pushkey de drush_extras cria um par de chaves pública / privada e envia a chave pública ao servidor ativo. O último comando é apenas para verificar se funcionou.


obrigado, a resposta é maravilhosa. mas meu problema é que meu ambiente de desenvolvimento deve ter os caches desativados e eu quero evitar visitar admin / settings / performance sempre que atualizar.
Capi Etheriel 12/10

1

Eu escrevi um comando drush que ativa / desativa todas as seguintes opções:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

Exemplos e código podem ser encontrados aqui: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enabledisable-cache.html

Portanto, para desativar todas as opções acima, basta executar:

drush cache-disable

O comando:

drush cache-enable

é o mesmo que definir as variáveis ​​para os valores:

cache: TRUE
cache_lifetime: 1 minute
page_cache_maximum_age: 1 hour
preprocess_css: TRUE
preprocess_js: TRUE

Isso é muito bom, mas tem sua própria opinião quando se trata de reativar o cache. Talvez seja melhor salvar o valor anterior ao desativar caches ou apenas pedir ao usuário através de um prompt da CLI.
Capi Etheriel

Você está certo @barraponto, modifiquei o script e adicionei ajuda também. Novo comando é drush cache-enable min max. Verifique o URL acima.
27615 cyberp

Nova versão ativa / desativa o block cachebem ..
cyberp

impressionante. O que está impedindo você de publicá-lo em drupal.org?
Capi Etheriel

Tempo! Eu não sei como fazê-lo :)
cyberp

1

Além disso, você pode desativar o cache abaixo da linha, colocá-lo nos settings.phparquivos

$conf['display_cache_disable'] = TRUE;
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.