Esiste uno script drush per disabilitare tutte le cache?


19

Intendo tutte le opzioni di memorizzazione nella cache in admin / settings / performance. Uso spesso drush sql-sync per mantenere aggiornata la mia copia di sviluppo con il server. Tuttavia, il server deve avere tutte le cache attivate, ovviamente.

Quindi mi chiedo: devo visitare admin / settings / performance ogni volta che aggiorno il mio db? O c'è una sceneggiatura Drush per questo?


1
solo una breve spiegazione: chx answer è la migliore in quanto tutto ciò che serve è 'drush en cache_disable --yes'. GApple si avvicina molto, dal momento che risolve il problema una volta per tutte, anche se potrebbe danneggiare i neofiti. doublejoice in realtà propone uno script drush ed è una risposta meravigliosa alla mia domanda, anche se gli altri due sono ancora migliori.
Capi Etheriel,

Risposte:



17

È necessario impostare diverse variabili per disattivare la memorizzazione nella cache sul sito di sviluppo ...

 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

È ancora più semplice se hai una configurazione condizionale nel tuo file settings.php. Quindi è possibile aggiornare il DB e le modifiche si attaccheranno!

$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

... anche se se si disattiva semplicemente la memorizzazione nella cache dell'interfaccia utente di amministrazione e si cancella la cache una volta, è possibile utilizzare il tema senza disattivare il resto ... poiché lo script ha meno probabilità di cambiare.


Puoi anche escludere il tuo file settings.php dal repository con il tuo codice push fino alla produzione e aggiungere queste impostazioni ...$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
doublejosh

Altri consigli ...$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

È possibile utilizzare il file settings.php per impostare esplicitamente le variabili in modo da sovrascrivere le impostazioni del database. I valori saranno bloccati su qualsiasi cosa sia impostata nel file e non possono essere modificati tramite l'interfaccia di amministrazione.
Alla fine del file predefinito c'è una sezione che inizia:

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

Così alla pagina disabilitare, JS e CSS caching, insieme cache, preprocess_jse preprocess_csstutti a'0'

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

La parentesi di chiusura per la dichiarazione dell'array è l'ultima riga del file predefinito, dopo qualche altro blocco di commenti, quindi assicurati di decommentarlo lì invece di aggiungerne uno nuovo. Assicurati inoltre di non avere un'altra $confdichiarazione in conflitto.


2

È sempre possibile utilizzare un file di alias di trascinamento sul server dev e impostarlo per saltare le tabelle della cache quando si esegue sql-sync. Quanto segue creerebbe alias per il tuo server di sviluppo locale e il tuo server live remoto:

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

Se l'hai salvato nella tua home directory su:

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

allora puoi chiamare il tuo comando sql-sync in questo modo:

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

e dovrebbe saltare le tabelle della cache (ovviamente ho elencato solo 2 lì, ma potresti inserire qualsiasi cosa, aggiungo anche il watchdog).

Per maggiori informazioni sugli alias e tutte le varie opzioni, controlla il file di esempio nella tua installazione di Drush su drush / esempi / esempio.aliases.drushrc.php

Come ultima nota per chiunque cerchi di utilizzare sql-sync, ho avuto problemi di autenticazione quando l'ho eseguito per la prima volta, quindi se qualcuno tenta questo e ottiene errori sulle chiavi pubbliche / private, procedi come segue:

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

Il comando pushkey di drush_extras crea una coppia di chiavi privata / pubblica e invia la chiave pubblica al server live. L'ultimo comando è solo per verificare che abbia funzionato.


grazie, la risposta è meravigliosa. ma il mio problema è che il mio ambiente di sviluppo dovrebbe avere le cache disattivate e voglio evitare di visualizzare admin / settings / performance ogni volta che aggiorno.
Capi Etheriel,

1

Ho scritto un comando drush che abilita / disabilita tutte le seguenti opzioni:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

Esempi e codici sono disponibili qui: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enabledisable-cache.html

Quindi, per disabilitare tutte le opzioni di cui sopra, devi solo eseguire:

drush cache-disable

Il comando:

drush cache-enable

equivale a impostare le variabili sui valori:

cache: TRUE
cache_lifetime: 1 minute
page_cache_maximum_age: 1 hour
preprocess_css: TRUE
preprocess_js: TRUE

È molto carino, ma ha una sua opinione quando si tratta di riattivare la cache. Forse sarebbe meglio salvare il valore precedente quando si disabilitano le cache o si chiede semplicemente all'utente tramite un prompt della CLI.
Capi Etheriel,

Hai ragione @barraponto, ho modificato lo script e ho aggiunto anche aiuto. Nuovo comando è drush cache-enable min max. Controlla l'URL sopra.
cyberp,

La nuova versione abilita / disabilita block cacheanche ..
cyberp,

eccezionale. cosa ti impedisce di pubblicarlo su drupal.org?
Capi Etheriel,

Tempo! Non so come farlo :)
Cyberp,

1

Inoltre puoi disabilitare la cache dalla riga sottostante, inserirla in settings.phpfile

$conf['display_cache_disable'] = TRUE;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.