Comment désactiver complètement la mise en cache?

26

Je développe un site dans Drupal 7 et la mise en cache ralentit considérablement mon travail. Par exemple, j'avais une fonction de thème pour un formulaire. J'étais perplexe, pourquoi ça ne marche pas. Jusqu'à ce que j'efface le cache et qu'il soit corrigé.

Comment l'éteindre complètement?

user4035
la source

Réponses:

21

Les fonctions de thème sont gérées par le registre de thème: reconstruire (ou pire, désactiver) tous les caches de votre site pour récupérer une nouvelle fonction de thème est inutile et exagéré.

Ce que vous pouvez faire est d'utiliser le module Devel pour reconstruire le registre de votre thème à chaque rechargement de page. Une fois installé, allez dans Configuration → Développement → Paramètres Devel. Là, cochez "Reconstruire le registre des thèmes à chaque chargement de page" et appuyez sur le bouton "Enregistrer la configuration". N'oubliez pas de la décocher (ou mieux encore, de désactiver complètement Devel) lorsque vous avez terminé le développement.


la source
ce n'est que le registre des thèmes.
Andrew Welch
2
La question est "Comment l'éteindre complètement?" ce n'est qu'une partie
SeanJA
29

Vous pouvez remplacer le backend de cache par défaut par un qui ne fait rien. Ajoutez simplement ceci à votre fichier settings.php:

if (!class_exists('DrupalFakeCache')) {
  $conf['cache_backends'][] = 'includes/cache-install.inc';
}
// Default to throwing away cache data.
$conf['cache_default_class'] = 'DrupalFakeCache';
// Rely on the DB cache for form caching - otherwise forms fail.
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

Pour être sûr, définissez le délai d'expiration du cache sur aucun sur la page Performances.

Je l'utilise en fait dans un fichier settings.local.php qui, s'il existe, est inclus au bas de mon fichier settings.php afin que je puisse synchroniser settings.php des environnements en direct ou de transfert vers mon environnement de développement sans avoir à s'inquiéter à propos de l'utilisation des mauvais paramètres de base de données, de pousser accidentellement les paramètres de développement à vivre, etc.

settings.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}
TwoD
la source
4
Vous pouvez utiliser la même astuce pour désactiver la mise en cache par bac. Par exemple. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
Alfred Armstrong
4
Cela devrait être la réponse acceptée, car celle acceptée ne décrit que comment désactiver le cache du registre de thème et pas tous les caches
mastazi
10

Vous ne pouvez pas activer de toute mise en cache complètement. Et si vous avez réellement fait, cela ralentirait vos progrès si bien plus encore. Considérez le temps qu'il faut pour effacer le cache, c'est à quoi ressemblerait chaque chargement de page.

Il y a tellement de hooks en cours d'exécution pour construire des informations sur les entités disponibles, les champs, les formulaires, les hooks implémentés, etc. qui ne doivent être exécutés qu'une seule fois actuellement, vous ne voulez pas empêcher cela.

Au fur et à mesure que vous vous habituez à Drupal, vous apprendrez bientôt ce qui nécessite un cache clair, et vous vous familiariserez probablement avec le raccourci des menus d'administration ou drush cc all, et ce ne sera plus un problème.

Létharion
la source
D'accord, une fois que vous vous rendez compte que la plupart des nouveaux hameçons ont besoin d'un cache clair avant d'être reconnus pour leur navigation fluide à partir de là! :)
Alex Weber
2
Honnêtement, après quelques mois de développement Drupal, je trouve toujours que c'est un problème. Je pense que même si le développement local de la vitesse n'est pas important, vous n'avez pas plusieurs utilisateurs qui envoient des demandes simultanées. Dans la plupart des autres frameworks (Django, Symfony, etc.), avoir le cache désactivé lors du développement local est une option facilement disponible, je ne vois pas pourquoi je ne peux pas l'avoir aussi dans Drupal. Chaque jour, j'ai au moins une instance dans laquelle quelque chose ne fonctionne pas et la raison est que j'ai oublié de nettoyer le cache, cela arrive très souvent et cela me dérange vraiment.
mastazi