Posso desativar o cache para a implantação de desenvolvimento?

22

Na plataforma de desenvolvimento, o cache pode ser uma dor. Posso desligá-lo? Isso afetará algum dos módulos que exigem isso?

Palbakulich
fonte

Respostas:

19

Instale o módulo devel, que adiciona uma opção de limpeza de cache aos administradores. Você encontrará um bloco de desenvolvimento a ser adicionado a uma região para limpeza rápida de cache ou se você instalar o menu admin e obter um menu rápido no canto superior esquerdo para limpar vários caches no Drupal.

Se você gosta da linha de comando, instale drush e use o drush cc allcomando para limpar os caches dos sites. Lembre-se de que o drush cc atualmente não limpa o cache do Varnish, se aplicável à sua configuração.

budda
fonte
9

Se você estiver usando o Drupal 7, sempre poderá definir seu cache como DrupalFakeCache, que normalmente é usado apenas durante o processo de instalação. Para definir isso, solte o seguinte snippet de código em seu settings.php:

include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';
Mikey P
fonte
4

A página 'Desempenho' na administração> configuração do site permitirá ativar / desativar o armazenamento em cache dos elementos selecionados do site. Os modelos de tema geralmente são armazenados em cache com mais persistência, mas podem ser liberados na mesma página de 'desempenho'.

O módulo 'Menu de administração' fornecerá um atalho em uma barra de ferramentas se as descargas de cache precisarem ser feitas com mais regularidade - durante o desenvolvimento do tema, encontro-me constantemente lavando.

Storsey
fonte
4

Até onde eu sei, não existem módulos que exijam cache. Se não quiser desativá-lo, limpe-o na Site Settings > Performanceseção.

Mesmo com o cache desativado, o Drupal não reconhecerá novos arquivos adicionados aos temas até que você limpe o cache.

Há algumas informações sobre diferentes maneiras de limpar o cache em Drupal.org

Paul Jones
fonte
4

Além dos métodos mencionados por Steve H , o uso do módulo Devel abre mais algumas opções, incluindo:

  • Reconstruindo o cache do tema em cada carregamento da página (útil se você é um profissional trabalhando em arquivos de modelo)
  • Um bloco que fornecerá acesso fácil à função de cache vazio e a função de reinstalação.

Com o módulo Devel e o cache desativados em Performance , o único outro cache principal em que você se depara no desenvolvimento de rotina é o roteador de menus, que pode ser reconstruído usando o Devel ou o Admin Menu, como Steve mencionou.

Comunidade
fonte
4

Uma coisa importante a ser observada é que, se você possui muitas folhas de estilo (do seu tema ou dos módulos), desativar a otimização de arquivo CSS tem o potencial de quebrar seu site no IE.

Embora não seja realmente o cache, ele está na mesma página de configurações e é frequentemente usado com o cache.

O link "Flush all caches" no módulo de menu admin é fantástico, a propósito.

epersonae
fonte
Se você está preocupado com IE você pode usar drupal.org/project/ie_css_optimizer
realityloop
3

Se você estiver usando o Drupal 6, o módulo " Cache Disable " poderá ser útil para essa tarefa se você não desejar [por algum motivo] instalar módulos mais pesados ​​como o Devel.

picos selvagens
fonte
2

Pergunta antiga, mas acabei de vê-la como relacionada a uma pesquisa que estava fazendo.

Quase todos os métodos de limpeza de cache acabam chamando drupal_flush_all_caches no final. Você pode brincar chamando isso em várias circunstâncias em seu próprio código.

mpdonadio
fonte
2

Às vezes, a quantidade de caches usados ​​com o Drupal pode ficar louca.

Aqui estão os métodos comuns de desativar e limpar os caches do Drupal e associados a ele.


CACHOS DESACTIVADOS:

Observe que você não pode desativar todos os caches, pois alguns deles são exigidos pelo Drupal.

Aqui está um método de desativar os caches adicionando as seguintes linhas ao seu arquivo de configurações:

// Disable caches
$conf['cache'] = 0;
$conf['block_cache'] = 0;
$conf['views_skip_cache'] = TRUE;
$conf['page_compression'] = 0;
$conf['preprocess_css'] = 0;
$conf['preprocess_js'] = 0;

Se você desativar todos os seus caches, o site será muito lento, portanto, não é recomendado para outros ambientes que exijam sua máquina de desenvolvimento.


LIMPAR CACHES

XCache

Limpe os caches do XCache se usado:

drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"

Ou limpe o cache no XCache no painel de administração (/ xcache-admin) se acima não funcionar.

eAccelerator

drush eval "function_exists('accelerator_reset') && accelerator_reset();"

APC

drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"

OPCache

Limpe o PHP OPCache se estiver usando com PHP> = 5.5

drush eval "function_exists('opcache_reset') && opcache_reset();"

Nota: O comando CLI acima não limpará o cache do Apache, conforme: Opcache - Limpe o cache no PHP5.4 e inferior .

memcached

Se você estiver usando o memcached, limpe, reinicie ou elimine o memcached com um dos métodos:

Como usuário (um deles):

echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server

Como raiz (uma delas):

/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.

Também é recomendável instalar o módulo memcached com a seguinte linha no seu arquivo de configurações:

$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';

Portanto, os caches do Memcached são limpos no cache de limpeza padrão do Drupal.

Verniz

Se você estiver usando o Varnish, é recomendável instalar o módulo Varnish e definir a seguinte linha no seu arquivo de configurações:

$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';

Portanto, o cache de verniz seria limpo juntos no cache de limpeza do Drupal.

Como alternativa, você pode usar o curl para limpar as páginas manualmente:

curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123

Leia mais: Como posso limpar o cache do Varnish?

Drupal

Limpar caches do Drupal via drush:

drush cc all
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
drush eval 'menu_rebuild();'

Você pode fazer o mesmo em / admin / config / development / performance, pois às vezes os caches da interface do usuário são limpos da melhor maneira que na CLI.


Aqui está o shell script útil para limpar todos os caches:

#!/bin/bash
set -o xtrace
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
echo 'flush_all' | nc localhost 11211 # Flush Contents Of a Memcached Server
drush eval "function_exists('opcache_reset') && opcache_reset(); function_exists('xcache_clear_cache') && xcache_clear_cache();"
drush eval 'menu_rebuild();'
set -o xtrace -
echo done.
kenorb
fonte
3
O OPCache não funcionará na CLI, por exemplo, consulte a explicação em: stackoverflow.com/questions/17716639/…
LarS
0

podemos usar um dos seguintes métodos para limpar o cache no drupal

1.) Podemos apenas visitar o URL: your_domain / admin / config / development / performance e clicar no botão Limpar cache.

2.) Se tivermos instalado o módulo drush, podemos limpar o cache com este comando drush cc all .

3.) Se tivermos acesso ao banco de dados, podemos limpar o cache com os seguintes comandos (o acesso direto a um banco de dados de produção não é enfaticamente recomendado; use uma das alternativas se o site estiver "ativo")

Cache TRUNCATE TABLE;

TRUNCATE TABLE cache_block;

TRUNCATE TABLE cache_bootstrap;

TRUNCATE TABLE cache_field;

TRUNCATE TABLE cache_filter;

TRUNCATE TABLE cache_form; // observe diferenças importantes em outras tabelas cache_ * - veja mais informações abaixo

TRUNCATE TABLE cache_image;

TRUNCATE TABLE cache_menu;

TRUNCATE TABLE cache_page;

TRUNCATE TABLE cache_path;

TRUNCATE TABLE cache_token;

TRUNCATE TABLE cache_update;

4.) Também podemos escrever consultas em nosso arquivo de módulo db_query ("DELETE FROM {cache};");

5.) Podemos usar a API drupal para limpar o cache como cache_clear_all ()

6.) Também podemos limpar o cache através do módulo devel. Instale o módulo devel e habilite o "Bloco de Desenvolvimento / Desenvolvimento".

Mais informações sobre cache_form, que tem uma finalidade diferente de outras tabelas cache_ :

  • Os principais documentos da API para drupal_flush_all_caches () dizem "Não limpe o cache_form - os envios de formulários em andamento podem quebrar." Essa preocupação se aplica apenas a sites com usuários ativos e não a versões de desenvolvimento.

  • outros métodos manuais de limpeza de caches descritos nesta postagem não afetarão cache_form

  • se você precisar reduzir o tamanho de cache_form em um site de produção, consulte O tamanho da tabela de formulário de cache é enorme

SynapseIndia
fonte