Optimización en Drupal

Drupal y Ficheros Estáticos: Eficiencia en la Carga de Entidades

Proyecto personal de Drupal para generar ficheros estáticos (JSON) y evitar consultas innecesarias a la base de datos al cargar una entidad, mejorando el rendimiento en arquitecturas desacopladas.

DrupalPHPJSONSistemas de archivos

Reto

Como bien sabemos los usuarios de Drupal, la base de datos no es precisamente su punto fuerte. Aunque Drupal ofrece una gran flexibilidad en la creación de entidades y campos, esa misma flexibilidad tiene un coste: la eficiencia. En arquitecturas con mucho tráfico, cargar entidades una y otra vez penaliza el rendimiento.

Solución

Desarrollé un módulo personalizado para Drupal que, además de las funciones habituales, almacena las entidades en archivos JSON dentro de un directorio público. La generación es posible gracias a la capacidad de serialización incorporada en el núcleo de Drupal.

$json_entity = $this->serializer->serialize($entity, 'json', []);
$this->fileSystem->saveData($json_entity, $file_path, FileSystemInterface::EXISTS_REPLACE);

De esta forma, en una arquitectura desacoplada podemos cargar entidades sin consultar a Drupal. Incluso podemos usar Drupal para generar estos archivos sin que ningún cliente tenga que hacer solicitudes para obtener las entidades.

Resultado

Una capa de entrega estática que elimina el 100% de las consultas a la base de datos en la carga de entidades cacheadas, con tiempos de respuesta por debajo de 50 ms frente a la consulta SQL equivalente, y que habilita un frontend headless más rápido y desacoplado. El módulo queda disponible como código abierto.