Gibt es ein Drush-Skript, um alle Caches zu deaktivieren?

19

Ich meine alle Caching-Optionen unter admin / settings / performance. Ich verwende häufig drush sql-sync, um meine Entwicklungskopie mit dem Server auf dem neuesten Stand zu halten. Auf dem Server müssen jedoch offensichtlich alle Caches aktiviert sein.

Ich frage mich also: Muss ich jedes Mal, wenn ich meine Datenbank aktualisiere, admin / settings / performance besuchen? Oder gibt es ein Drush-Skript dafür?

Capi Etheriel
quelle
1
nur eine kurze erklärung: chx antwort ist die beste da alles was es braucht ist 'drush en cache_disable --yes'. Gapple kommt dem sehr nahe, da es das Problem ein für alle Mal löst, obwohl es Neulingen schaden könnte. doublejoice schlägt tatsächlich ein Drush-Skript vor und ist eine wunderbare Antwort auf meine Frage, obwohl die anderen beiden noch besser sind.
Capi Etheriel

Antworten:

17

Sie müssen mehrere Variablen festlegen, um die Zwischenspeicherung auf Ihrer Entwickler-Site zu deaktivieren ...

 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

Es ist noch einfacher, wenn Sie eine bedingte Konfiguration in Ihrer settings.php-Datei haben. Dann können Sie die DB aktualisieren und die Änderungen bleiben erhalten!

$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

... obwohl, wenn Sie nur verschiedene Caching-Vorgänge über die Admin-Benutzeroberfläche deaktivieren und den Cache einmal löschen, können Sie Themen entfernen, ohne den Rest auszuschalten ... da sich das Skript mit geringerer Wahrscheinlichkeit ändert.

doublejosh
quelle
Sie können auch Ihre settings.php-Datei aus dem Repository ausschließen und Ihren Pushing-Code bis zur Produktion mit diesen Einstellungen hinzufügen ...$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
DoubleJosh
Weitere Empfehlungen ...$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

Sie können Ihre settings.php-Datei verwenden, um explizit Variablen festzulegen, die Ihre Datenbankeinstellungen überschreiben. Die Werte sind für alle in der Datei festgelegten Einstellungen gesperrt und können nicht über die Administrationsoberfläche geändert werden.
Am Ende der Standarddatei befindet sich ein Abschnitt, der beginnt:

/**
 * 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',

So zu deaktivieren Seite, JS und CSS - Caching, Satz cache, preprocess_jsund preprocess_cssalle'0'

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

Die schließende Klammer für die Array-Deklaration ist die letzte Zeile der Standarddatei nach einigen weiteren Kommentarblöcken. Stellen Sie daher sicher, dass Sie dort das Kommentarzeichen entfernen, anstatt ein neues hinzuzufügen. Stellen Sie außerdem sicher, dass Sie keine andere $confwidersprüchliche Erklärung haben.

schnappen
quelle
2

Sie können jederzeit eine Drush-Aliase-Datei auf Ihrem Dev-Server verwenden und diese so einrichten, dass beim Ausführen von sql-sync die Cache-Tabellen übersprungen werden. Folgendes würde Aliase für Ihren lokalen Entwickler-Server und Ihren Remote-Live-Server erstellen:

$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',
       ),
    ),
);

Wenn Sie das in Ihrem Home-Verzeichnis gespeichert haben:

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

dann kannst du deinen sql-sync befehl wie folgt aufrufen:

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

und es sollte die Cache-Tabellen überspringen (offensichtlich habe ich nur 2 dort aufgeführt, aber Sie könnten alles dort setzen, ich füge sogar Wachhund hinzu).

Weitere Informationen zu Aliasnamen und den verschiedenen Optionen finden Sie in der Beispieldatei in Ihrer Drush-Installation unter drush / examples / example.aliases.drushrc.php

Als letzte Anmerkung für jeden, der versucht, SQL-Sync zu verwenden, hatte ich Authentifizierungsprobleme, als ich es zum ersten Mal ausführte. Wenn also jemand dies versucht und Fehler über öffentliche / private Schlüssel erhält, gehen Sie wie folgt vor:

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

Der Pushkey-Befehl von drush_extras erstellt ein privates / öffentliches Schlüsselpaar und leitet den öffentlichen Schlüssel an den Live-Server weiter. Der letzte Befehl ist nur zu überprüfen, ob es funktioniert hat.

Chris Graham
quelle
Danke, die Antwort ist wunderbar. Mein Problem ist jedoch, dass in meiner Entwicklungsumgebung die Caches deaktiviert sein sollten und ich vermeiden möchte, bei jedem Update Admin / Einstellungen / Leistung aufzurufen.
Capi Etheriel
1

Ich habe einen Drush-Befehl geschrieben, der alle folgenden Optionen aktiviert / deaktiviert:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

Beispiele und Code finden Sie hier: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enabledisable-cache.html

Um alle oben genannten Optionen zu deaktivieren, müssen Sie nur Folgendes ausführen:

drush cache-disable

Der Befehl:

drush cache-enable

entspricht dem Setzen der Variablen auf die Werte:

cache: TRUE
cache_lifetime: 1 minute
page_cache_maximum_age: 1 hour
preprocess_css: TRUE
preprocess_js: TRUE
Cyberp
quelle
Das ist sehr schön, aber es hat seine eigene Meinung, wenn es darum geht, den Cache wieder zu aktivieren. Vielleicht ist es besser, den vorherigen Wert zu speichern, wenn Sie Caches deaktivieren oder den Benutzer über eine CLI-Eingabeaufforderung fragen.
Capi Etheriel
Sie haben Recht @barraponto, ich habe das Skript geändert und auch Hilfe hinzugefügt. Neuer Befehl ist drush cache-enable min max. Überprüfen Sie die obige URL.
Cyberp
Neue Version block cache
aktiviert
genial. Was hindert Sie daran, es auf drupal.org zu veröffentlichen?
Capi Etheriel
Zeit! Ich weiß nicht, wie es geht :)
Cyberp
1

Sie können den Cache auch deaktivieren, indem Sie ihn unterhalb der Zeile in settings.phpDateien ablegen

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