Comment vider les caches de Drupal :
- sans le module Devel
- sans exécuter une déclaration PHP dans un nouveau nœud, etc.
- sans accéder à la base de données elle-même
En fait, comment instruisez-vous un utilisateur final pour qu'il efface ses caches ?
Comment vider les caches de Drupal :
En fait, comment instruisez-vous un utilisateur final pour qu'il efface ses caches ?
La compensation à la demande peut être effectuée dans Administrer > Configuration du site > Performance.
Vous devriez mettre en place le travail cron pour s'exécuter toutes les heures (ou à l'intervalle qui vous convient).
Lorsque le cron est exécuté sur Drupal, tous les caches sont effacés et reconstruits sans qu'un humain ait à le faire manuellement.
Si cette question concerne le thème, vous devriez désactiver les mécanismes de mise en cache (agrégation css/js) et vous n'aurez pas à vider les données du cache lorsque vous apportez des modifications.
VOICI:
J'ai dû désinstaller le module "devel" (il était incompatible avec Special Menu Items, dont j'avais plus besoin), donc j'ai 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 l'un de vos modules personnalisés) dans le HOOK_MENU, avant la ligne "return $items" :
// raccourci pour vider les caches :
$items['flush-cache'] = array(
'type' => MENU_CALLBACK,
'title' => t('Vider le cache'),
'description' => 'Custom Cache Flush MODULENAME',
'page callback' => 'MODULENAME_flush_cache',
'access callback' => TRUE,
);
ÉTAPE 2: Maintenant, dans le même fichier de module, là où ce n'est pas "à l'intérieur" d'une autre fonction, ajoutez :
/** Page callback **/
function MODULENAME_flush_cache() {
drupal_flush_all_caches();
return 'Les caches ont été vidés.';
}
Maintenant, vous pouvez simplement aller à l'URL "/flush-cache" sur votre site pour vider le cache. (Après avoir vidé le cache une dernière fois à l'ancienne.)
ÉTAPE 3: Si vous voulez que ce soit VRAIMENT pratique, ajoutez ce qui suit à votre fichier page.tpl.php. Vous pouvez le mettre à peu près n'importe où entre et . REMARQUE : $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 :
vider
Et voilà ! Vous avez un lien "vider" dans le coin supérieur droit de chaque page sur lequel vous pouvez cliquer. N'hésitez pas à modifier les quantités de "right" et "top" (ou changer "right" en "left" ou "top" en "bottom" pour le placer où vous le souhaitez. Positionnement du lien fonctionne uniquement sur les navigateurs modernes, mais c'est seulement pour vous, donc cela ne devrait pas poser de problème, non ?
J'ai trouvé ce qui suit sur : http://www.drupalgardens.com/content/clear-all-caches-not-working
Il y a une autre couche de mise en cache autour du site qui n'est pas affectée par "vider toutes les caches", vous avez raison. C'est la couche qui stocke le contenu pour les utilisateurs anonymes.
Si vous voulez contourner la mise en cache à des fins de test, vous pouvez ajouter une chaîne de requête fictive à la fin de votre chemin d'accès du site. Par exemple, si vous vouliez contourner la mise en cache sur example.drupalgardens.com/foo, vous pourriez visiter example.drupalgardens.com/foo?bar=baz ou tout autre texte aléatoire configuré comme ?xxxxx=xxxxx.
Cela m'a aidé, car j'avais des problèmes où vider le cache sous Configuration > Performance ne semblait pas aider.
Le code ci-dessus est pour Drupal 6.
Pour Drupal 7, le module de vidage de cache serait le suivant :
MENU_NORMAL_ITEM,
'title' => t('Vider le cache'),
'description' => 'Videz tous les caches du site web pour vous assurer qu\'il se met à jour pour refléter '.
'vos modifications récentes.',
'page callback' => 'flush_cache_custom_callback',
'access callback' => user_access('flush cache'),
);
return $items;
}
/**
* Implémentation de hook_permission()
*/
function flush_cache_permission() {
return array(
'administer my module' => array(
'title' => t('module de vidage de cache'),
'description' => t('Administrer le vidage de cache.'),
),
);
}
/**
* Fonction qui vide le cache
*/
function flush_cache_custom_callback() {
drupal_flush_all_caches();
return 'Les caches ont été vidés.';
}
Remarque : vous pouvez ensuite le vider en allant à :
sitename.com/flush-cache
Assurez-vous de leur donner les autorisations nécessaires sur la page des autorisations. Vider le cache de manière "normale" si les autorisations n'apparaissent pas après avoir activé le module.
C'est préférable lorsque vous ne voulez pas que votre client ait accès au menu administratif mais que vous voulez quand même qu'ils puissent vider le cache.
Le module suivant crée un élément de menu qui est accessible uniquement aux utilisateurs ayant la permission "vider le cache", que ce module rend disponible sur la page des permissions d'utilisateur régulière.
/**
* Implémentation de hook_menu()
*/
function flush_cache_menu() {
$items = array();
$items['flush-cache'] = array(
'type' => MENU_NORMAL_ITEM,
'title' => t('Vider le cache'),
'description' => 'Vide tous les caches du site Web pour vous assurer qu\'il est mis à jour pour refléter '.
'vos modifications récentes.',
'page callback' => 'flush_cache_custom_callback',
'access callback' => user_access('vider le cache'),
);
return $items;
}
/**
* Implémentation de hook_perm()
*/
function flush_cache_perm() {
return array('vider le cache');
}
/**
* Fonction qui vide le cache
*/
function flush_cache_custom_callback() {
drupal_flush_all_caches();
return 'Les caches ont été vidés.';
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.