Existe-t-il un script drush pour désactiver tous les caches?

19

Je veux dire toutes les options de mise en cache sous admin / settings / performance. J'utilise fréquemment drush sql-sync pour garder ma copie de développement à jour avec le serveur. Cependant, tous les caches doivent être activés sur le serveur, évidemment.

Je me demande donc: dois-je visiter admin / settings / performance chaque fois que je mets à jour ma base de données? Ou existe-t-il un script Drush pour cela?

Capi Etheriel
la source
1
juste une brève explication: la réponse chx est la meilleure car il suffit de 'drush en cache_disable --yes'. GApple se rapproche vraiment, car il résout le problème une fois pour toutes, bien qu'il puisse blesser les débutants. doublejoice propose en fait un script drush, et est une merveilleuse réponse à ma question, bien que les deux autres soient encore meilleurs.
Capi Etheriel

Réponses:

17

Vous devez définir plusieurs variables pour désactiver la mise en cache sur votre site de développement ...

 drush vset cache 0
 drush vset preprocess_css 0
 drush vset preprocess_js 0
 drush vset page_cache_maximum_age 0
 drush vset views_skip_cache TRUE

C'est encore plus facile si vous avez une configuration conditionnelle dans votre fichier settings.php. Ensuite, vous pouvez actualiser la base de données et les modifications seront conservées!

$conf['cache'] = 0; // Page cache $conf['page_cache_maximum_age'] = 0; // External cache TTL $conf['preprocess_css'] = FALSE; // Optimize css $conf['preprocess_js'] = FALSE; // Optimize javascript $conf['views_skip_cache'] = TRUE; // Views caching

... bien que si vous désactivez simplement la mise en cache via l'interface utilisateur d'administration et videz le cache une fois, vous pouvez supprimer le thème sans désactiver le reste ... car le script est moins susceptible de changer.

doublejosh
la source
Vous pouvez également exclure votre fichier settings.php du référentiel votre code de poussée jusqu'à la production avec et ajouter ces paramètres ...$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
doublejosh
Plus de recommandations ...$conf['cache'] = 0; $conf['page_cache_maximum_age'] = 0; $conf['block_cache'] = FALSE; $conf['preprocess_css'] = FALSE; $conf['preprocess_js'] = FALSE; $conf['views_skip_cache'] = TRUE;
doublejosh
11

Vous pouvez utiliser votre fichier settings.php pour définir explicitement des variables pour remplacer vos paramètres de base de données. Les valeurs seront verrouillées sur tout ce qui est défini dans le fichier et ne peuvent pas être modifiées via l'interface d'administration.
À la fin du fichier par défaut se trouve une section qui commence:

/**
 * Variable overrides:
 *
 * To override specific entries in the 'variable' table for this site,
 * set them here. You usually don't need to use this feature. This is
 * useful in a configuration file for a vhost or directory, rather than
 * the default settings.php. Any configuration setting from the 'variable'
 * table can be given a new value. Note that any values you provide in
 * these variable overrides will not be modifiable from the Drupal
 * administration interface.
 *
 * Remove the leading hash signs to enable.
 */
# $conf = array(
#   'site_name' => 'My Drupal site',
#   'theme_default' => 'minnelli',
#   'anonymous' => 'Visitor',

Donc , à la page désactiver, JS, et la mise en cache de CSS, ensemble cache, preprocess_jset preprocess_csstout'0'

$conf = array(
  'cache' => '0',
  'preprocess_css' => '0',
  'preprocess_js' => '0',
);

La parenthèse fermante pour la déclaration de tableau est la dernière ligne du fichier par défaut, après quelques blocs de commentaires supplémentaires, alors assurez-vous de la décommenter là plutôt que d'en ajouter un nouveau. Assurez-vous également que vous n'avez pas d'autre $confdéclaration en conflit.

gapple
la source
2

Vous pouvez toujours utiliser un fichier d'alias drush sur votre serveur de développement et le configurer pour ignorer les tables de cache lorsque vous exécutez sql-sync. Les éléments suivants créeraient des alias pour votre serveur de développement local et votre serveur en direct distant:

$aliases['dev'] = array(
    'root' => '/var/www/devroot',
);

$aliases['live'] = array(
    'root' => '/var/www/liveroot',
    'remote-host' => 'www.mysite.com',
    'remote-user' => 'exampleuser',
    'command-specific' => array (
       'sql-sync' => array (
         'skip-tables-list' => 'cache,cache_menu',
       ),
    ),
);

Si vous l'avez enregistré dans votre répertoire personnel à:

~/.drush/mysite.aliases.drushrc.php

alors vous pouvez appeler votre commande sql-sync comme ceci:

drush sql-sync @mysite.live @mysite.dev

et il devrait ignorer les tables de cache (évidemment, je n'en ai répertorié que 2, mais vous pouvez y mettre n'importe quoi, j'ajoute même un chien de garde).

Pour plus d'informations sur les alias et toutes les différentes options, consultez l'exemple de fichier dans votre installation drush à drush / examples / example.aliases.drushrc.php

Comme dernière note pour quiconque essaye d'utiliser sql-sync, j'ai eu des problèmes d'authentification lorsque je l'ai exécuté pour la première fois, donc si quelqu'un tente cela et obtient des erreurs sur les clés publiques / privées, procédez comme suit:

drush dl drush_extras
drush pushkey @mysite.live
drush @mysite.live status

La commande pushkey de drush_extras crée une paire de clés privée / publique et envoie la clé publique au serveur en direct. La dernière commande consiste simplement à vérifier que cela fonctionne.

Chris Graham
la source
merci, la réponse est merveilleuse. mais mon problème est que mon environnement de développement devrait avoir les caches désactivés et je veux éviter de visiter admin / settings / performance chaque fois que je mets à jour.
Capi Etheriel du
1

J'ai écrit une commande drush qui active / désactive toutes les options suivantes:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

Des exemples et du code peuvent être trouvés ici: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enabledisable-cache.html

Donc, pour désactiver toutes les options ci-dessus, il vous suffit d'exécuter:

drush cache-disable

La commande:

drush cache-enable

revient à définir les variables sur les valeurs:

cache: TRUE
cache_lifetime: 1 minute
page_cache_maximum_age: 1 hour
preprocess_css: TRUE
preprocess_js: TRUE
cyberp
la source
C'est très bien, mais il a sa propre opinion lorsqu'il s'agit de réactiver le cache. Il serait peut-être préférable d'enregistrer la valeur précédente lors de la désactivation des caches ou de simplement demander à l'utilisateur via une invite CLI.
Capi Etheriel
Vous avez raison @barraponto, j'ai modifié le script et j'ai également ajouté de l'aide. La nouvelle commande est drush cache-enable min max. Vérifiez l'URL ci-dessus.
cyberp
La nouvelle version active / désactive block cacheégalement ..
cyberp
impressionnant. qu'est-ce qui vous empêche de le publier sur drupal.org?
Capi Etheriel
Temps! Je ne sais pas comment faire :)
cyberp
1

Vous pouvez également désactiver le cache par la ligne ci-dessous, le mettre dans des settings.phpfichiers

$conf['display_cache_disable'] = TRUE;
Yusef
la source