Prestashop, problemas con la tabla ps_layered_filter_block y su tamaño excesivo

La tabla ps_layered_filter_block de Prestashop es utilizada por el módulo de Búsqueda por facetas (ps_facetedsearch) para almacenar información de caché relacionada con los filtros de navegación. En determinadas situaciones, esta tabla puede crecer de forma descontrolada hasta alcanzar tamaños de varios gigabytes, lo que puede causar problemas graves de rendimiento y limitaciones de espacio en el hosting.

Cuando el módulo de Búsqueda por facetas está activo, la tabla ps_layered_filter_block almacena en caché las diferentes combinaciones de filtros según las categorías, atributos, características y precios de los productos. Cuantos más productos, categorías y atributos tenga tu tienda, más combinaciones posibles se guardarán en esta tabla, causando un crecimiento continuo que puede llegar a ser problemático si no se gestiona correctamente.

Este comportamiento se hizo más evidente a partir de la versión 1.7.6 de Prestashop, donde el módulo de facetas cambió su sistema de almacenamiento de caché. Un problema común es que la tabla puede crecer entre 100MB y 1GB diariamente en tiendas con catálogos grandes o con muchas combinaciones de filtros posibles.

Para ver si es la causa del tamaño excesivo de tu base de datos, lo más sencillo es comprobar el uso de espacio desde phpMyAdmin, donde podrás ordenar las tablas por tamaño y ver aquellas que causan mayor uso de espacio.

Recuperando el espacio ocupado por ps_layered_filter_block y ps_layered_price_index

El módulo ps_facetedsearch (Búsqueda por facetas) incluye herramientas específicas para gestionar este problema:

  1. Limpiar la caché manualmente:
    • Accede al panel de administración de Prestashop
    • Ve a Módulos > Gestor de módulos
    • Busca "Búsqueda por facetas" y haz clic en Configurar
    • En la página de configuración, encuentra la sección Indexación (o Indexación y caché)
    • Haz clic en el botón Clear cache
    • Esto eliminará inmediatamente todo el contenido de la tabla ps_layered_filter_block
    • Tras esto es recomendable usar las dos opciones que verás justo al lado, para reconstruir el índice de precios y atributos.

Configurar una tarea programada para limpiar la caché automáticamente

Dado que es cuestión de tiempo que la caché vuelva a crecer, la solución más efectiva a largo plazo es configurar una tarea cron que limpie regularmente la caché del módulo de facetas. Para ello:

  1. Accede al panel de administración de Prestashop
  2. Ve a la sección Módulos y localiza el módulo Búsqueda por facetas
  3. Haz clic en Configurar
  4. En la parte inferior de la página encontrarás un apartado de Indexación con un botón de Limpiar caché
  5. Haz clic con el botón derecho sobre el botón de Limpiar caché y selecciona "Copiar dirección del enlace"
  6. La URL copiada será similar a esta: https://tu-tienda.com/module/ps_facetedsearch/cron?ajax=1&action=clearCache&token=XXXXXXX

Ahora necesitas configurar una tarea cron en tu hosting que ejecute esta URL periódicamente. Para hacerlo en cPanel, sigue estos pasos:

  1. Accede a tu panel de cPanel
  2. Busca y haz clic en la sección "Tareas Cron" o "Cron Jobs"
  3. En la sección "Añadir nueva tarea Cron", configura:
    • Selecciona la frecuencia (por ejemplo: "Una vez al día")
    • Establece la hora (preferiblemente en horarios de baja actividad, como las 3:00 AM)
    • En el campo de comando, introduce:
wget -q -O /dev/null "https://tu-tienda.com/module/ps_facetedsearch/cron?ajax=1&action=clearCache&token=XXXXXXX"

Esto ejecutará la limpieza de caché automáticamente según la frecuencia que hayas establecido, evitando que la tabla crezca descontroladamente.