¿Hay un script drush para deshabilitar todas las cachés?


19

Me refiero a todas las opciones de almacenamiento en caché en admin / settings / performance. Con frecuencia uso drush sql-sync para mantener mi copia de desarrollo actualizada con el servidor. Sin embargo, el servidor debe tener todas las memorias caché activadas, obviamente.

Entonces, me pregunto: ¿debo visitar admin / settings / performance cada vez que actualizo mi base de datos? ¿O hay un script Drush para eso?


1
solo una breve explicación: la respuesta chx es la mejor ya que todo lo que se necesita es 'drush en cache_disable --yes'. GApple se acerca mucho, ya que resuelve el problema de una vez por todas, aunque puede dañar a los novatos. doublejoice en realidad propone un script drush, y es una respuesta maravillosa a mi pregunta, aunque los otros dos son aún mejores.
Capi Etheriel

Respuestas:



17

Debe configurar varias variables para desactivar el almacenamiento en caché en su sitio de desarrollo ...

 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 aún más fácil si tiene una configuración condicional en su archivo settings.php. ¡Entonces puede actualizar la base de datos y los cambios se mantendrán!

$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

... aunque si solo desactiva varios caché a través de la interfaz de usuario del administrador y borra el caché una vez, entonces puede alejar el tema sin desactivar el resto ... ya que es menos probable que cambie el script.


También puede excluir su archivo settings.php del repositorio con el que está empujando el código hasta la producción y agregar estas configuraciones ...$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
doublejosh

Más recomendaciones ...$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

Puede usar su archivo settings.php para establecer explícitamente variables para anular la configuración de su base de datos. Los valores se bloquearán a lo que esté establecido en el archivo y no se pueden cambiar a través de la interfaz de administración.
Al final del archivo predeterminado hay una sección que comienza:

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

Así que para desactivar la página, JS, CSS y el almacenamiento en caché, juego cache, preprocess_jsy preprocess_csstodos'0'

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

El paréntesis de cierre para la declaración de matriz es la última línea del archivo predeterminado, después de algunos bloques de comentarios más, así que asegúrese de descomentarlo allí en lugar de agregar uno nuevo. También asegúrese de no tener otra $confdeclaración que pueda entrar en conflicto.


2

Siempre puede usar un archivo de alias drush en su servidor de desarrollo y configurarlo para omitir las tablas de caché cuando ejecuta sql-sync. Lo siguiente crearía alias para su servidor de desarrollo local y su servidor remoto en vivo:

$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 guardó eso en su directorio de inicio en:

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

entonces puedes llamar a tu comando sql-sync así:

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

y debería omitir las tablas de caché (obviamente solo enumeré 2 allí, pero podría poner cualquier cosa allí, incluso agrego watchdog).

Para obtener más información sobre alias y todas las diversas opciones, consulte el archivo de ejemplo en su instalación drush en drush / examples / example.aliases.drushrc.php

Como última nota para cualquiera que intente usar sql-sync, tuve problemas de autenticación cuando lo ejecuté por primera vez, por lo que si alguien intenta esto y obtiene errores sobre las claves públicas / privadas, haga lo siguiente:

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

El comando pushkey de drush_extras crea un par de claves privada / pública y empuja la clave pública al servidor en vivo. El último comando es solo para verificar que funcionó.


Gracias, la respuesta es maravillosa. pero mi problema es que mi entorno de desarrollo debería tener las memorias caché apagadas y quiero evitar visitar admin / settings / performance cada vez que actualizo.
Capi Etheriel

1

He escrito un comando drush que habilita / deshabilita todas las siguientes opciones:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

Los ejemplos y el código se pueden encontrar aquí: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enabledisable-cache.html

Entonces, para deshabilitar todas las opciones anteriores, solo tiene que ejecutar:

drush cache-disable

El comando:

drush cache-enable

es lo mismo que configurar las variables a los valores:

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

Eso es muy bueno, pero tiene su propia opinión cuando se trata de volver a habilitar el caché. Tal vez sería mejor guardar el valor anterior al deshabilitar los cachés o simplemente preguntar al usuario a través de un indicador de CLI.
Capi Etheriel

Tienes razón @barraponto, modifiqué el script y también agregué ayuda. Nuevo comando es drush cache-enable min max. Verifique la URL anterior.
cyberp

La nueva versión habilita / deshabilita block cachetambién ...
cyberp

increíble. ¿Qué le impide publicarlo en drupal.org?
Capi Etheriel

¡Hora! No sé cómo hacerlo :)
cyberp

1

También puede deshabilitar el caché por debajo de la línea, ponerlo en settings.phparchivos

$conf['display_cache_disable'] = TRUE;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.