El Síndrome de drush cc all

Enviado por rpayanm el Wed, 15/07/2015 - 15:01
Limpiar caché en drupal

Si utilizas drush y programas haciendo módulo y plantillas en Drupal conocerás el síntoma: adiciona un nuevo archivo de plantilla, adiciona un nuevo hook a tu módulo, cambias un par de cosas en tu código y vas y haces drush cc all por si acaso. Drupal tiene un amplio sistema de caché que es tu amigo pero desafortunadamente cuando programamos a menudo lo limpiamos todo para que esos cambios sean detectado por Drupal.

Este constante "clear all cache" puede ser realmente lento. En grandes sitios un "drush cc all" puede tomar de 15 a 20 segundos. Si no estás seguro de haber sobreescrito la plantilla o el hook correcto, entonces es bastante molesto perder tanto tiempo en cada intento.

Como probablemente conoces, Drupal tiene más de una caché. Debería ser genial si solamente limpiaramos la caché necesaria y evitar las otras, así seremos más eficientes. El único problema conocido es: que modificación va en cada caché, bueno aquí les va:

Desde el terminal ejecutamos drush cc, nos mostrará el siguiente menú:

Enter a number to choose which cache to clear.

[0]   :  Cancel
[1]   :  drush
[2]   :  all
[3]   :  theme-registry
[4]   :  menu
[5]   :  css-js
[6]   :  block
[7]   :  module-list
[8]   :  theme-list
[9]   :  registry

drush cc drush

Este solo limpia la caché interna de drush. No necesitas tener un sitio disponible para limpiar esta caché.

$ drush cc all

Limpia toda la caché del sitio + la caché de drush.

$ drush cc theme-registry

Este comando simplemente llama drupal_theme_rebuild() para reconstruir el sistema de theming. Esto es necesario si un nuevo archivo ".tpl.php" o un hook del tema ha sido agregado al sitio.

$ drush cc menu

Este ejecuta menu_rebuild(), el cual actualiza las tablas de la base de datos usado por varias funciones de los menús. Por ejemplo, cualquier nuevo elemento (esos que se definen en el hook_menu) que son agregados a la tabla menu_links, y los que han sido removidos son eliminados. Esta también limpia la caché de las páginas y bloques para evitar mostrar enlaces de menú viejos.

$ drush cc css-js

Si has habilitado la Agregación CSS o JS, esta opción reconstruirá estos archivos comprimidos.

$ drush cc block

Como se puede imaginar, esta opción actualiza la caché de los bloques en nuestro sitio.

$ drush cc module-list

Esta opción re-escanea el directorio de módulos en su base de datos y actualiza la lista interna de los módulos que están disponibles.

$ drush cc theme-list

Esta opción re-escanea el directorio de themes en su base de datos y actualiza la lista interna de los módulos que están disponibles.

$ drush cc registry

Drupal mantiene un registro interno de todas las funciones o clases en el sistema, permitiendo cargar(lazy) los archivos de código a demanda (reduciendo la cantidad de código que debe ser analizado en cada petición). La lista de estos archivos son conocido como "code registry" y este es almacenado en la tabla system en su base de datos. Esta caché buscará de nuevo en la lista de archivos y actualizará esta tabla con datos actualizados. Tenga en cuenta que esto reconstruirá el registro desde 0.

$ drush cc ?????

Puede usted ver otras opciones en esta lista, porque son de módulos contribuidos (como views, token, etc), puede usted también agregar su propio comando para limpiar alguna caché. En cada caso verá en el módulo contrib, un archivo llamado mymodule.drush.inc que contiene el código que define qué se hará cuando se ejecute este comando.

Esto es todo, espero que le haya sido interesante.