Question

Comment vider les caches Drupal:

  • sans le module Devel
  • sans exécuter une instruction PHP dans un nouveau nœud, etc.
  • sans entrer dans la base de données elle-même

Effectivement, comment demandez-vous à l'utilisateur final d'effacer ses caches?

Était-ce utile?

La solution

Lorsque vous êtes connecté en tant qu'administrateur (il est évident que tous les utilisateurs du site ne doivent pas nécessairement pouvoir effacer le cache) , une page doit figurer dans " Administrer > Configuration du site & Gt; Performance & ";

Et au bas de la page, il devrait y avoir un bouton (quelque chose comme & "; Effacer les données en cache &";) pour effacer le cache

.

Autant que je me souvienne, Devel n'a pas besoin de le faire, et vous n'avez vraiment pas besoin d'aller dans la base de données, ni d'exécuter du code PHP fait maison.


Pour référence, vous pouvez consulter Comment effacer le cache Drupal côté serveur

Autres conseils

Vous pouvez également utiliser le module Drush , qui vous permet d'utiliser la ligne de commande pour exécuter des applications Drupal populaires. commandes, comme & "; drush cron &"; ou " drush cache clear ".

Si vous souhaitez effacer le cache d'un module, vous pouvez utiliser le code suivant.

drupal_flush_all_caches();

J'ai la solution la plus simple pour cela. Installez le module admin_menu (pas seulement à cette fin, une fois installé, vous ne le regretterez pas, lien: http://drupal.org/project/admin_menu ). Ok, alors sur un menu déroulant nouvellement apparu, survolez votre favicon et le menu déroulant apparaîtra et vous verrez: Vider le menu Tous les caches. Un clic - une chasse. De plus, vous pouvez vider tous les caches ensemble ou sélectionner les éléments à vider: Pages, menus, thèmes, etc. Essayez et vous ne reviendrez jamais)

Ce serait génial si vous pouviez obtenir le comportement en tapant dessus:
http://drupal.local./admin/settings/performance?op=Clear%20cached%20data
mais vous ne pouvez pas.
Cependant, je souhaite noter l'URL permettant de raccourcir le menu d'administration (utilisez la dernière partie):
http://drupal.local. /admin/settings/performance

La suppression à la demande peut être effectuée dans Administrer > Configuration du site & Gt; Performance.

Vous devez configurer le travail cron pour qu'il s'exécute toutes les heures (ou à un intervalle quelconque).

Lorsque cron est exécuté sur Drupal, tous les caches sont effacés et reconstruits sans qu'il soit besoin d'un humain pour le faire manuellement.

Si cette question concerne les thèmes, vous devez désactiver les mécanismes de mise en cache (agrégation css / js) et vous ne devrez pas effacer les données du cache lorsque vous apportez des modifications.

J'ai trouvé ce qui suit à l'adresse http: //www.drupalgardens. com / content / clear-all-caches-not-working

  

Il existe une autre couche de mise en cache autour du site qui & efface tout   les caches " n'affecte pas, vous avez raison. C'est la couche qui stocke   le contenu pour les utilisateurs anonymes.

     

Si vous souhaitez contourner le cache à des fins de test, vous pouvez ajouter un   chaîne de requête indésirable à la fin du chemin de votre site. Par exemple, si vous   voulait contourner le cache sur example.drupalgardens.com/foo vous pourriez   visitez example.drupalgardens.com/foo?bar=baz ou tout autre texte aléatoire   mis en place comme? xxxxx = xxxxx.

Cela m’a aidé, car j’ai eu des problèmes d’effacement du cache sous Configuration > La performance n'a pas semblé aider.

Le code ci-dessus concerne Drupal 6.

Pour Drupal 7, le module de vidage du cache serait le suivant:

<?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.';
}

Remarque: que vous le videz ensuite en accédant à:

nom du site.com/flush-cache

Assurez-vous de leur donner l'autorisation sur la page des autorisations. Vider le cache une fois que le & Quot; normal & Quot; manière si l’autorisation n’apparaît pas après avoir allumé le module.

Cela est préférable lorsque vous ne souhaitez pas que votre client ait accès au menu d'administration, mais que vous souhaitiez tout de même pouvoir vider le cache.

ICI VOUS ALLEZ:

Je devais désinstaller le " devel " module (c’était incompatible avec les éléments du menu spécial dont j’avais besoin de pire), j’ai donc créé le mien.

Partout où vous voyez MODULENAME, remplacez-le par le nom de votre module.

ÉTAPE 1: Ajoutez à n’importe quel module (de préférence un de vos modules personnalisés) dans HOOK_MENU, avant le & Quot; return $ items & Quot; ligne:

// 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,
);

ÉTAPE 2: Maintenant, dans le même fichier de module, où ce n'est pas & "À l'intérieur de &"; toute autre fonction, ajoutez:

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

Maintenant, vous pouvez simplement aller à l'URL " / flush-cache " sur votre site pour vider le cache. (Après avoir vidé la mémoire cache une dernière fois à l'ancienne.)

ÉTAPE 3: Si vous le voulez vraiment pratique, ajoutez ce qui suit à votre fichier page.tpl.php. Vous pouvez le mettre à peu près n'importe où entre & Lt; body & Gt; et < / body > ;. NOTE: $ my_is_test est une variable que j'utilise qui est TRUE sur mon système de test et FALSE en production. Si vous n'avez pas quelque chose comme ça, remplacez-le par TRUE ou FALSE pour l'activer ou le désactiver:

<?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; ?>

Et le tour est joué! Vous avez un & "Flush &"; Cliquez sur le lien en haut à droite de chaque page. N'hésitez pas à changer le & Quot; right & Quot; et " top " montants (ou remplacez & "droit &" par & "gauche &" ou & "haut &" par & "bas &" Pour le placer où bon vous semble. Ce positionnement de lien ne fonctionne que sur les navigateurs modernes, mais il n’est que pour vous, il ne devrait donc pas y avoir de problème, non?

Le module suivant crée un élément de menu accessible uniquement aux utilisateurs disposant de l'autorisation & "; vider le cache &"; que ce module rend disponible sur la page des autorisations utilisateur normales.

/**
 * 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.';
}

Dans Drupal 8, le module de menu administrateur n'est pas encore prêt à être utilisé. Et il sera probablement remplacé par Drupal & "Toolbar &"; Donc, pour le moment, il n’ya pas de moyen facile d’effacer le cache, sans aller à:

admin/config/development/performance

La seule alternative est d’ajouter un élément de menu dans la barre d’outils existante. Cela peut être fait en utilisant ce module , mais comme vous pouvez le voir, il faut encore un peu de travail. Je l'ai fait fonctionner, mais j'ai dû faire quelques ajustements.

utilisez drush et cette commande: drush cc all

Si vous utilisez Boost pour mettre en cache, vous devez être plus spécifique:

drush @alias_name cc all
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top