¿Cómo desactivar completamente el almacenamiento en caché?


26

Estoy desarrollando un sitio en Drupal 7 y el almacenamiento en caché ralentiza significativamente mi trabajo. Por ejemplo, tenía una función de tema para un formulario. Estaba perplejo, ¿por qué no funciona? Hasta que borré el caché y lo arreglaron.

¿Cómo apagarlo por completo?

Respuestas:


21

El registro de temas maneja las funciones de tema: reconstruir (o peor aún, deshabilitar) todas las cachés de su sitio para recoger una nueva función de tema es innecesario y excesivo.

Lo que puede hacer es usar el módulo Devel para reconstruir el registro de su tema en cada recarga de página. Una vez instalado, vaya a Configuración → Desarrollo → Configuración de desarrollo. Allí, marque "Reconstruir el registro de temas en cada carga de página" y presione el botón "Guardar configuración". Recuerde desmarcarlo (o mejor aún, deshabilitar Devel por completo) cuando haya terminado con el desarrollo.


Sin embargo, este es solo el registro de temas.
Andrew Welch

2
La pregunta es "¿Cómo apagarlo por completo?" esto es solo una parte
SeanJA

29

Puede reemplazar el backend de caché predeterminado por uno que en realidad no hace nada. Simplemente agregue esto a su archivo settings.php:

if (!class_exists('DrupalFakeCache')) {
  $conf['cache_backends'][] = 'includes/cache-install.inc';
}
// Default to throwing away cache data.
$conf['cache_default_class'] = 'DrupalFakeCache';
// Rely on the DB cache for form caching - otherwise forms fail.
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

Solo para estar seguro, establezca el tiempo de caducidad de la memoria caché en ninguno en la página Rendimiento.

De hecho, utilizo esto en un archivo settings.local.php que, si existe, se incluye en la parte inferior de mi archivo settings.php para poder sincronizar settings.php de los entornos en vivo o provisional a mi entorno de desarrollo sin tener que preocuparme sobre el uso de la configuración de base de datos incorrecta, accidentalmente presionando la configuración de desarrollo para vivir, etc.

settings.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}

44
Puede usar el mismo truco para desactivar el almacenamiento en caché por contenedor. P.ej. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
Alfred Armstrong

44
Esta debería ser la respuesta aceptada, ya que la aceptada solo describe cómo deshabilitar la memoria caché del registro de temas y no todas las memorias caché
mastazi

10

No se puede activar de todo el almacenamiento en caché por completo. Y si realmente lo hizo, sería ralentizar el progreso de manera mucho más. Considere el tiempo que tarda en borrar el caché, así es como sería cada carga de página.

Hay tantos ganchos que se ejecutan para generar información sobre las entidades disponibles, campos, formularios, ganchos implementados, etc., que solo necesitan ejecutarse una vez actualmente, no desea evitar eso.

A medida que se acostumbre a Drupal, pronto aprenderá qué cosas requieren un borrado de caché, y probablemente se familiarice con el acceso directo de los menús de administración o drush cc all, y esto ya no será un problema.


¡De acuerdo, una vez que te das cuenta de que la mayoría de los nuevos ganchos necesitan un caché limpio antes de ser reconocidos su navegación sin problemas a partir de ahora! :)
Alex Weber

2
Honestamente, después de unos meses de desarrollo de Drupal, todavía encuentro que esto es un problema. Creo que si bien desarrollar la velocidad local no es importante, no tiene múltiples usuarios que envíen solicitudes concurrentes. En la mayoría de los otros frameworks (Django, Symfony, etc.) tener la caché desactivada mientras se desarrolla localmente es una opción fácilmente disponible, no veo por qué no puedo tener eso también en Drupal. Todos los días tengo al menos una instancia en la que algo no funciona y la razón es que olvidé limpiar el caché, sucede con mucha frecuencia y realmente me molesta.
mastazi

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.