Pergunta

Como faço para esvaziar os caches Drupal:

  • sem o Devel módulo
  • sem correr algum Declaração de PHP em um novo nó etc.
  • sem ir para o próprio
  • banco de dados

Efetivamente, como você instruir um usuário final para limpar seus caches?

Foi útil?

Solução

Quando você está conectado como um administrador (obviamente, nem todos os usuários do site tem o poder para limpar o cache) , deve haver uma página no " Administrar> Site Configuration> desempenho ".

E, na parte inferior da página, deve haver um botão (algo como " Limpar dados em cache ") para limpar o cache

Tanto quanto me lembro, não há nenhuma necessidade de Devel para fazer isso, e você realmente não precisa ir para o banco de dados, nem executar algum código PHP feito em casa.


Como referência, você pode dar uma olhada Como Limpar Drupal do lado do servidor de cache

Outras dicas

Você também pode usar o Drush módulo, que permite que você use a linha de comando para executar populares Drupal comandos, como "cron Drush" ou "Drush limpar cache".

Se você quiser limpar o cache de um módulo, você pode usar o código a seguir.

drupal_flush_all_caches();

Eu tenho a solução mais fácil para isso. Instale admin_menu módulo (na verdade, não só para este fim, uma vez que você tenha instalado este módulo, você não vai se arrepender, com certeza, link: http://drupal.org/project/admin_menu ). Ok, então em um menu superior suspensa recentemente apareceu em foco o seu favicon e menu suspenso irá aparecer, e você verá: Lave menu de todos os caches. Um clique - um flush. Além disso, você pode liberar todos os caches juntos ou selecionar o que nivelado: Pages, menu, temas etc. Experimente e você nunca vai voltar)

Seria incrível se você pudesse obter o comportamento ao acertar:
http://drupal.local./admin/settings/performance?op=Clear%20cached%20data
mas você não pode.
No entanto eu quero observar o URL para o curto corte através do menu admin (usar a última parte):
http://drupal.local. /admin/settings/performance

On-demand compensação pode ser feito em Administrar> Site Configuration> Performance.

Você deve configurar o trabalho cron para ser executado a cada hora (ou qualquer intervalo a seu gosto).

Quando cron é executado em Drupal, todos os caches são apuradas e reconstruído sem a necessidade de um ser humano que manualmente fazê-lo.

Se esta questão pertence a theming, você deve desativar os mecanismos de cache (css / js agregação) e você não terá que limpar os dados em cache quando você faz alterações.

Eu encontrei o seguinte em: http: //www.drupalgardens. com / conteúdo / clara com todas as caches-não-trabalho

Há uma outra camada de caching em torno do local que "tudo claro não caches" não afeta, você está certo. Essa é a camada que armazena o conteúdo para usuários anônimos.

Se você quiser ignorar o cache para fins de teste, você pode adicionar um string de consulta lixo para o final do seu caminho site. Por exemplo, se você queria ignorar o cache em example.drupalgardens.com/foo você poderia visita example.drupalgardens.com/foo?bar=baz ou qualquer outro texto aleatório configurado como? xxxxx = xxxxx.

Isso me ajudou, porque eu tive problemas em limpar o cache em Configuração> Performance parecia não ajuda.

O código acima é para Drupal 6.

Para Drupal 7 o módulo nivelado-cache seria o seguinte:

<?php 
/**
 * Implementation of hook_menu()
 */
function flush_cache_menu() {
  $items = array();

  $items['flush-cache'] = array(
  'type' => MENU_NORMAL_ITEM,
  'title' => t('Flush the cache'),
  'description' => 'Flush all website caches to make sure it updates to relect '.
    'your recent changes.',
  'page callback' => 'flush_cache_custom_callback',
  'access callback' => user_access('flush cache'),
  );

  return $items;
}

/**
 * Implementation of hook_permission()
 */
function flush_cache_permission() {
  return array(
    'administer my module' => array(
      'title' => t('flush cache module'),
      'description' => t('Content admin flush cache.'),
    ),
  );
}

/**
 * Function that flushes the cache
 */
function flush_cache_custom_callback() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

Nota: que você, em seguida, lave-lo, vá para:

sitename.com/flush-cache

Certifique-se de dar-lhes permissão na página de permissão. Limpar cache uma vez que o caminho "normal" se a permissão não aparecer depois de ligar o módulo on.

Esta é preferível quando você não quer que seu cliente para obter acesso ao menu de administração, mas você ainda quer que eles sejam capazes de liberar o cache.

Aqui vai:

Eu tive que desinstalar o módulo "devel" (era incompatível com itens do menu especial, que eu precisava pior), então eu fiz o meu próprio.

Em qualquer lugar você vê ModuleName substituí-lo com o nome do seu módulo.

PASSO 1: Adicionar a qualquer módulo (de preferência um de seus módulos personalizados) no HOOK_MENU, antes do "retorno $ items" linha:

// short cut for flushing the caches:
$items['flush-cache'] = array(
  'type' => MENU_CALLBACK,
  'title' => t('Flush the cache'),
  'description' => 'MODULENAME Custom Cache Flush',
  'page callback' => 'MODULENAME_flush_cache',
  'access callback' => TRUE,
);

ETAPA 2: Agora, no mesmo arquivo do módulo, onde não é "dentro" qualquer outra função, adicione:

/**  Page callback  **/
function MODULENAME_flush_cache() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

Agora, você pode simplesmente ir para a URL "/ rubor-cache" em seu site para liberar o cache. (Depois de liberar o cache de uma última vez a velha forma.)

ETAPA 3: Se você quer realmente conveniente, adicione o seguinte ao seu arquivo page.tpl.php. Você pode colocá-lo praticamente em qualquer lugar entre e . NOTA: $ my_is_test é um uso variável I Isso é verdade no meu sistema de teste, e FALSE em produção. Se você não tem algo assim, substituí-lo com VERDADEIRO ou FALSO para ligá-lo ou desligado:

<?php if ($my_is_test): ?>
<a style="text-align:left; position:absolute; right:2px; top:20px;" href="<?=$base_path?>flush-cache" onclick="this.innerHTML = '<b><blink><big>Wait...</big></blink></b>';">flush</a>
<? endif; ?>

E voila! Você tem um link "nivelada" no canto superior direito de cada página que você pode clicar. Sinta-se livre para mudar o "direito" e "top" valores (ou mudança "direito" de "esquerda" ou "top" para "baixo" para colocá-lo onde quer que você como ele. Este link posicionando só funciona em navegadores modernos, mas é apenas para você, por isso não deve ser um problema, certo?

O módulo seguinte cria um item de menu que é acessível apenas para usuários com a permissão "embutida cache", que este módulo torna disponível na página de permissões de usuário regular.

/**
 * Implementation of hook_menu()
 */
function flush_cache_menu() {
  $items = array();

  $items['flush-cache'] = array(
  'type' => MENU_NORMAL_ITEM,
  'title' => t('Flush the cache'),
  'description' => 'Flush all website caches to make sure it updates to relect '.
    'your recent changes.',
  'page callback' => 'flush_cache_custom_callback',
  'access callback' => user_access('flush cache'),
  );

  return $items;
}

/**
 * Implementation of hook_perm()
 */
function flush_cache_perm() {
  return array('flush cache');
}

/**
 * Function that flushes the cache
 */
function flush_cache_custom_callback() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

Em Drupal 8, o módulo de menu administrador não está completamente pronto para uso ainda. E ele provavelmente irá obter substituído com Drupal "barra de ferramentas". Então agora não há nenhuma maneira fácil de limpar o cache, sem realmente ir para:

admin/config/development/performance

A única alternativa é adicionar um item de menu na barra de ferramentas existente. Isso pode ser feito usando este módulo , mas como você pode ver, ele ainda precisa de um pouco de trabalho. Eu tenho que trabalhar, mas teve que fazer alguns ajustes.

uso Drush e este comando: Drush cc todos

Se você estiver usando impulso para o cache que você precisa para ser mais específico:

drush @alias_name cc all
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top