¿Puedo desactivar el caché para la implementación de desarrollo?

22

En la plataforma de desarrollo, el almacenamiento en caché puede ser un dolor. ¿Puedo apagarlo? ¿Afectará alguno de los módulos que lo requieren?

palbakulich
fuente

Respuestas:

19

Instale el módulo de desarrollo que agrega una opción de borrado de caché para los administradores. Encontrarás un bloque de desarrollo para agregar a una región para borrar rápidamente el caché, o si instalas el menú de administración y obtienes un menú rápido en la parte superior izquierda para borrar varios cachés en Drupal.

Si le gusta la línea de comando, instale drush y use el drush cc allcomando para borrar los cachés de sus sitios. Tenga en cuenta que actualmente drush cc no borra la memoria caché de Varnish si eso es aplicable a su configuración.

Budda
fuente
9

Si usa Drupal 7, siempre puede configurar su almacenamiento en caché para usar DrupalFakeCache, que normalmente solo se usa durante el proceso de instalación. Para configurar eso, suelte el siguiente fragmento de código en su settings.php:

include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';
Mikey P
fuente
4

La página 'Rendimiento' en administración> configuración del sitio le permitirá habilitar / deshabilitar el almacenamiento en caché de los elementos del sitio seleccionados. Las plantillas de temas generalmente se almacenan en caché de forma más persistente, pero se pueden vaciar dentro de la misma página de "rendimiento".

El módulo 'Menú de administración' proporcionará un acceso directo en una barra de herramientas si los enjuagues de la memoria caché se deben realizar con mayor frecuencia; durante el desarrollo del tema, me encuentro enjuagando constantemente.

Storsey
fuente
4

Hasta donde sé, no hay ningún módulo que requiera almacenamiento en caché. Si no desea desactivarlo, puede borrarlo en la Site Settings > Performancesección.

Incluso con el almacenamiento en caché deshabilitado, Drupal no reconocerá los nuevos archivos agregados a los temas hasta que borre el caché.

Hay información sobre las diferentes formas de borrar el caché en Drupal.org

Paul Jones
fuente
4

Además de los métodos mencionados por Steve H , el uso del módulo Devel abre algunas opciones más, que incluyen:

  • Reconstrucción de la caché de temas en cada carga de página (útil si eres un themer trabajando en archivos de plantilla)
  • Un bloque que proporcionará un acceso fácil a la función de caché vacía y la función de reinstalación.

Con el módulo Devel y el almacenamiento en caché desactivados en Rendimiento , la única otra memoria caché importante con la que se encontrará en el desarrollo de rutina es el enrutador de menú, que se puede reconstruir utilizando Devel o Admin Menu como mencionó Steve.

Comunidad
fuente
4

Una cosa importante a tener en cuenta es que si tiene muchas hojas de estilo (ya sea de su tema o de módulos), desactivar la optimización de archivos CSS tiene el potencial de romper su sitio en IE.

Aunque en realidad no está en caché, está en la misma página de configuración y a menudo se usa con el almacenamiento en caché.

El enlace "Vaciar todas las cachés" en el módulo del menú de administración es fantástico, por cierto.

epersonae
fuente
Si está preocupado por IE, puede usar drupal.org/project/ie_css_optimizer
realityloop el
3

Si está utilizando Drupal 6, el módulo " Deshabilitar caché " puede ser útil para esa tarea si no desea [por alguna razón] instalar módulos más pesados ​​como Devel.

picos salvajes
fuente
2

Antigua pregunta, pero acabo de ver que apareció como una relacionada con una búsqueda que estaba haciendo.

Casi todos los métodos de limpieza de caché terminan llamando a drupal_flush_all_caches al final. Puedes jugar llamando a esto en varias circunstancias en tu propio código.

mpdonadio
fuente
2

La cantidad de cachés utilizados con Drupal a veces puede volverse loca.

Estos son los métodos comunes para deshabilitar y borrar los cachés de Drupal y asociados con ellos.


CACHES DISCAPACITANTES:

Tenga en cuenta que no puede deshabilitar todas las memorias caché, ya que Drupal requiere algunas de ellas.

Aquí hay un método para deshabilitar los cachés agregando las siguientes líneas en su archivo de configuración:

// Disable caches
$conf['cache'] = 0;
$conf['block_cache'] = 0;
$conf['views_skip_cache'] = TRUE;
$conf['page_compression'] = 0;
$conf['preprocess_css'] = 0;
$conf['preprocess_js'] = 0;

Si deshabilita todas sus memorias caché, su sitio web será muy lento, por lo que no se recomienda para otros entornos exentos de su máquina de desarrollo.


LIMPIANDO CACHES

XCache

Borrar cachés XCache si se usa:

drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"

O borre el caché en XCache en el panel de administración (/ xcache-admin) si lo anterior no funciona.

eAccelerator

drush eval "function_exists('accelerator_reset') && accelerator_reset();"

APC

drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"

OPCache

Borrar PHP OPCache si se usa con PHP> = 5.5

drush eval "function_exists('opcache_reset') && opcache_reset();"

Nota: el comando CLI anterior no borrará el caché para Apache, según: Opcache - Limpiar el caché en PHP5.4 y versiones inferiores .

memcached

Si está usando memcached, debe borrar, reiniciar o matar su memcached con uno de los métodos:

Como usuario (uno de estos):

echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server

Como raíz (uno de estos):

/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.

También se recomienda instalar el módulo memcached con la siguiente línea en su archivo de configuración:

$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';

Por lo tanto, las memorias caché de Memcached se borran en la memoria caché estándar de Drupal.

Barniz

Si está utilizando Varnish, se recomienda instalar el módulo Varnish y establecer la siguiente línea en su archivo de configuración:

$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';

Por lo tanto, el caché de Varnish se eliminaría en el caché de borrado de Drupal.

Alternativamente, puede usar curl para borrar las páginas manualmente:

curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123

Leer más: ¿Cómo puedo borrar el caché de Varnish?

Drupal

Borrar cachés de Drupal a través de drush:

drush cc all
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
drush eval 'menu_rebuild();'

Puede hacer lo mismo en / admin / config / development / performance, ya que a veces los cachés de la interfaz de usuario se borran de la mejor manera que desde la CLI.


Aquí está el script de shell útil para borrar todas las cachés:

#!/bin/bash
set -o xtrace
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
echo 'flush_all' | nc localhost 11211 # Flush Contents Of a Memcached Server
drush eval "function_exists('opcache_reset') && opcache_reset(); function_exists('xcache_clear_cache') && xcache_clear_cache();"
drush eval 'menu_rebuild();'
set -o xtrace -
echo done.
kenorb
fuente
3
OPCache no funcionará desde CLI, por ejemplo, vea la explicación en: stackoverflow.com/questions/17716639/…
LarS
0

Podemos usar uno de los siguientes métodos para borrar el caché en Drupal

1.) Solo podemos visitar url your_domain / admin / config / development / performance y hacer clic en el botón borrar caché.

2.) Si hemos instalado el módulo drush podemos borrar el caché con este comando drush cc all .

3.) Si tenemos acceso a la base de datos, podemos borrar la memoria caché con los siguientes comandos (no se recomienda enfáticamente el acceso directo a una base de datos de producción; utilice una de las alternativas si su sitio está "en vivo")

TRUNCATE TABLE cache;

TABLA DE TRUNCATE cache_block;

TABLA DE TRUNCATE cache_bootstrap;

TRUNCATE TABLE cache_field;

TABLA TRUNCATE cache_filter;

TABLA TRUNCATE cache_form; // tenga en cuenta las diferencias importantes con respecto a otras tablas cache_ *; consulte más información a continuación

TRUNCATE TABLE cache_image;

TABLA TRUNCATE cache_menu;

TRUNCATE TABLE cache_page;

TRUNCATE TABLE cache_path;

TABLA DE TRUNCATE cache_token;

TRUNCATE TABLE cache_update;

4.) También podemos escribir consultas en nuestro archivo de módulo db_query ("DELETE FROM {cache};");

5.) Podemos usar la API de Drupal para borrar el caché como cache_clear_all ()

6.) También podemos borrar el caché mediante el módulo de desarrollo, instalar el módulo de desarrollo y habilitar el "Bloque desarrollador / desarrollo". De este modo, podemos borrar el caché

Más información sobre cache_form, que tiene un propósito diferente al de otras tablas cache_ :

  • los documentos básicos de la API para drupal_flush_all_caches () dicen "No borre cache_form - los envíos de formularios en progreso pueden romperse". Esta preocupación se aplica solo a sitios con usuarios activos y no a versiones de desarrollo.

  • otros métodos manuales para borrar cachés descritos en esta publicación no afectarán a cache_form

  • si necesita reducir el tamaño de cache_form en un sitio de producción, vea El tamaño de la tabla del formulario de caché es enorme

SynapseIndia
fuente