Desactivar la caché en Drupal 8 mientra desarrollamos

Enviado por rpayanm el Sun, 19/06/2016 - 12:21
Limpiar cahé Drupal

Cuando estamos desarrollando un módulo o un tema debemos borrar la caché de Drupal (render cache, dynamic page cache, Twig cache, etc) muy a menudo para ver los cambios que hemos realizado.

Nuestra terminal puede puede parecerse a esto:

$ drush cr
Cache rebuild complete.                      [ok]
$ drush cr
Cache rebuild complete.                      [ok]
$ drush cr
Cache rebuild complete.                      [ok]
$ drush cr
Cache rebuild complete.                      [ok]
$ drush cr
Cache rebuild complete.                      [ok]

Para evitar todo esto haremos lo siguiente:

Pasos:

1. Copia y renombra sites/example.settings.local.php a  sites/default/settings.local.php

$ cp sites/example.settings.local.php sites/default/settings.local.php

2. Abre el archivo settings.php y descomenta estas líneas:

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

Esto incluirá el código del archivo settings.local.php en el archive settings.php

3. Abra el archivo settings.local.php y descomenta la línea para habilitar el servicio de null cache:

$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';

4. Descomentar las siguientes en settings.local.php

$settings['cache']['bins']['render'] = 'cache.backend.null';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';

Si no desea instalar los módulos y temas de pruebas, marque como FALSE lo siguiente:

$settings['extension_discovery_scan_tests'] = TRUE;

6. Abra development.services.yml en la carpeta sites y agrega en la sección parameters adicione el siguiente bloque (deshabilita la caché y el debug de twig):

twig.config:
  debug: true
  auto_reload: true
  cache: false

Quedaría de esta forma:

parameters:
  http.response.debug_cacheability_headers: true
# Esto lo agregamos
  twig.config:
    debug: true
    auto_reload: true
    cache: false
# Fin de lo agregado
services:
  cache.backend.null:
    class: Drupal\Core\Cache\NullBackendFactory

7. Después de esto tienes que reconstruir la caché, sino el sitio mostrará el error de "unexpected error on page reload". Puedes hacerlo con drush:

$ drush cr

o visitando la siguiente url:

http://yoursite/core/rebuild.php

8. Terminado! ahora está listo para desarrollar en Drupal 8 sin estar limpiado cache a cada ratos.