CacheFlush
Proporciona control detallado sobre la limpieza de caché de Drupal a través de presets configurables que pueden combinar cache bins del core, tablas de caché de módulos contrib y funciones personalizadas de limpieza de caché.
cacheflush
Instalar
composer require 'drupal/cacheflush:^2.0'
Overview
CacheFlush es la herramienta definitiva para gestionar la limpieza de caché de Drupal con gran granularidad. A diferencia del enfoque estándar de "limpiar todas las cachés", este módulo permite crear presets personalizados que limpian solo los componentes de caché específicos necesarios para tu tarea particular.
El módulo es adecuado tanto para desarrolladores como para administradores y editores. Cada preset puede combinar varias opciones de limpieza de caché incluyendo cache bins del core (bootstrap, config, render, menu, etc.), cachés de módulos contrib, funciones específicas de caché como static reset o limpieza de caché Twig, y con el submódulo avanzado, cache IDs específicos y cache tags.
Los presets pueden ejecutarse directamente desde el menú de administración, mediante comandos Drush, o automáticamente a través de trabajos cron. El acceso a cada preset puede controlarse a través del sistema de permisos de Drupal, permitiendo que diferentes roles tengan acceso a diferentes operaciones de limpieza de caché.
Features
- Crear presets personalizados ilimitados combinando diferentes fuentes de caché
- Limpiar cache bins del core (bootstrap, config, render, menu, entity, discovery, etc.)
- Limpiar tablas de caché de módulos contrib detectadas automáticamente desde los módulos instalados
- Ejecutar funciones de caché específicas como drupal_static_reset, vaciar assets CSS/JS, invalidar container, borrar caché Twig, limpiar cachés de plugins y reconstruir datos de módulos/temas
- Modo avanzado para limpiar cache IDs específicos por bin e invalidar cache tags
- Acceso rápido mediante integración con el menú de administración con entradas de menú opcionales por preset
- Soporte de comandos Drush para limpiar presets desde línea de comandos
- Integración con cron mediante Ultimate Cron para limpieza de caché programada
- Interfaz de administración basada en Views con operaciones masivas (publicar, despublicar, añadir/eliminar entrada de menú, eliminar)
- Control de acceso granular con permisos separados para ver, editar, eliminar y ejecutar presets propios vs cualquier preset
- Hooks para que módulos personalizados extiendan las opciones de limpieza de caché o reaccionen a eventos de limpieza de caché
Use Cases
Desarrollo: Limpiar solo caché Twig después de cambios en plantillas
Crear un preset que solo limpie la caché de almacenamiento PHP de Twig. Esto es mucho más rápido que limpiar todas las cachés cuando solo has modificado archivos de plantilla .html.twig. Selecciona la opción 'twig' bajo 'Otras opciones de caché del core' y guarda. Añádelo al menú para acceso con un clic durante el desarrollo de temas.
Desarrollo de temas: Restablecer cachés de render y assets
Crear un preset combinando el cache bin 'render', limpieza de 'asset' (CSS/JS), y caché 'twig'. Esto limpia todo lo necesario cuando se hacen cambios en el frontend sin reconstruir todo el container o datos de módulos.
Desarrollo de plugins: Limpiar cachés de discovery y plugins
Crear un preset con el cache bin 'discovery' y la opción 'plugin'. Usar esto cuando se desarrollan plugins personalizados (blocks, fields, etc.) para reconocer rápidamente definiciones de plugins nuevas o modificadas sin una reconstrucción completa de caché.
Editor de contenido: Limpiar caché de página específica por cache tags
Usando el submódulo Advanced, crear un preset que invalide cache tags específicos como 'node:123' o 'taxonomy_term:45'. Esto permite a los editores limpiar la caché de contenido específico sin afectar el resto del sitio.
Mantenimiento de caché programado con cron
Habilitar el submódulo Cron y crear un preset que limpie la caché de render. Habilitar cron para este preset y configurar el trabajo de Ultimate Cron para ejecutarse cada hora durante períodos de bajo tráfico. Esto asegura que la caché de render no crezca sin límites en sitios de alto tráfico.
Limpieza de caché en pipeline CI/CD mediante Drush
Usar el submódulo Drush para integrar la limpieza de caché en scripts de despliegue. Crear presets para diferentes escenarios de despliegue (despliegues solo de código podrían necesitar solo invalidación de container, mientras que despliegues de funcionalidades podrían necesitar reconstrucción de router) y llamarlos mediante 'drush cf [id]' en tu pipeline de despliegue.
Tips
- Comienza con un preset que limpie solo lo que comúnmente necesitas durante el desarrollo - la mayoría de las tareas no requieren una reconstrucción completa de caché
- Añade los presets de uso frecuente al menú de administración para acceso con un clic desde cualquier lugar en la interfaz de administración
- Usa la función de cache tags del submódulo Advanced para invalidar cachés específicas de contenido sin afectar el caché de páginas anónimas
- Al depurar, crea un preset 'Opción Nuclear' que limpie todo, pero usa presets específicos para el trabajo diario para ahorrar tiempo
- Considera convenciones de nomenclatura de presets como 'Dev: Solo Twig' o 'Deploy: Reconstrucción completa' para hacer claro su propósito en el menú
Technical Details
Admin Pages 6
/admin/cacheflush
Página principal de administración del módulo CacheFlush. Proporciona acceso a la función Limpiar Todo y enlaces a los presets individuales de limpieza de caché que han sido añadidos al menú.
/admin/structure/cacheflush
Listado basado en Views de todas las entidades de presets cacheflush. Muestra ID del preset, título, autor, estado (publicado/despublicado), estado de entrada de menú y fecha de modificación. Incluye operaciones masivas y filtros por estado y entrada de menú.
/admin/structure/cacheflush/add
Formulario para crear un nuevo preset de limpieza de caché. Organiza las fuentes de caché en pestañas verticales categorizadas: Tablas de caché del core, Otras opciones de caché del core (funciones), Tablas de caché contrib, y Otras opciones de caché contrib.
/cacheflush/{cacheflush}/edit
Formulario para editar un preset de limpieza de caché existente. Misma estructura que el formulario de añadir con los valores actuales precargados.
/cacheflush/{cacheflush}/delete
Formulario de confirmación para eliminar un preset de limpieza de caché.
/admin/structure/cacheflush/settings
Formulario de configuración para la entidad Cacheflush. Actualmente proporciona un marcador de posición para gestionar configuraciones de campos.
Permisos 11
Hooks 4
hook_cacheflush_tabs_options
Define opciones personalizadas de limpieza de caché que aparecen en el formulario de creación de presets. Cada opción especifica una descripción, pestaña de categoría y funciones a ejecutar.
hook_cacheflush_ui_tabs
Define pestañas/categorías personalizadas en el formulario de creación de presets para organizar las opciones de limpieza de caché.
hook_cacheflush_before_clear
Se ejecuta antes de que se limpie un preset de limpieza de caché. Permite a los módulos realizar acciones o registros antes de la limpieza de caché.
hook_cacheflush_after_clear
Se ejecuta después de que se haya limpiado un preset de limpieza de caché. Permite a los módulos realizar acciones de limpieza o notificación.
Drush Commands 1
drush cacheflush [id]
Limpiar caché usando un preset cacheflush predefinido. Sin argumento ID, lista todos los presets publicados disponibles.
Troubleshooting 5
Asegúrate de que el preset esté tanto Publicado (estado) COMO tenga 'Entrada de menú' habilitada. Verifica estos valores en el listado de entidades en /admin/structure/cacheflush. También verifica que tengas el permiso 'cacheflush clear cache'.
El preset debe estar publicado para ser ejecutable. Edita el preset y asegúrate de que esté guardado con estado publicado, o usa las operaciones masivas para publicarlo.
Asegúrate de que el módulo Ultimate Cron esté instalado y habilitado antes de habilitar el submódulo cacheflush_cron. Si habilitaste cacheflush_cron primero, deshabilítalo y vuelve a habilitarlo después de instalar Ultimate Cron.
Los módulos contrib deben implementar hook_cacheflush_tabs_options() para exponer sus opciones de limpieza de caché. Si la opción de caché de un módulo no aparece, el módulo puede que no soporte la integración con CacheFlush.
Asegúrate de haber seleccionado tanto un Cache ID como un Servicio (cache bin). Ambos campos son requeridos. El cache ID debe coincidir exactamente con el cid usado al almacenar el elemento de caché.
Security Notes 3
- El permiso 'cacheflush clear cache' solo debe otorgarse a roles de confianza ya que la limpieza de caché puede impactar temporalmente el rendimiento del sitio
- El permiso 'cacheflush administer' permite crear presets que podrían limpiar cachés críticas - asignar con cuidado
- Los presets pueden ejecutar funciones arbitrarias definidas mediante hooks - revisar cualquier módulo contribuido que implemente hook_cacheflush_tabs_options()