web-dev-qa-db-fra.com

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

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?

19
Capi Etheriel

https://drupal.org/node/797346 pour D7. Pour D6, https://drupal.org/project/cache_disable mais il casse le cache du formulaire. Il faut le patcher pour tomber dans le cache DB pour la mise en cache du formulaire. Et probablement mettre à jour le cache d'état également.

6
anon

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 que vous videz le cache une fois, vous pouvez supprimer le thème sans désactiver le reste ... car le script est moins susceptible de changer.

17
doublejosh

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, pour désactiver la mise en cache des pages, JS et CSS, définissez cache, preprocess_js, et preprocess_css tout à '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'en avez pas d'autre $conf déclaration qui sera en conflit.

11
gapple

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 le fichier d'exemple dans votre installation drush à drush/examples/example.aliases.drushrc.php

Comme dernière note pour quiconque essaie 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.

2
Chris Graham

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
1
cyberp

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

$conf['display_cache_disable'] = TRUE;
1
Yusef