Casos de Estudio

Cómo convertí una web WordPress saturada en un sistema industrial que triplicó las solicitudes de presupuesto

El caso ProSilicones64: de 23 plugins y 6 segundos de carga a una arquitectura PHP custom con resultados medibles.

Publicado
Lectura 6 min

Introducción

Cuando ProSilicones64 me contactó, su web llevaba años acumulando parches. Era un WordPress con 23 plugins activos, cuatro vulnerabilidades de seguridad (dos de ellas críticas), y un tiempo de carga de 6.2 segundos que hacía que cualquier ingeniero de compras cerrara la pestaña antes de ver el catálogo.

El problema no era el diseño. El problema era que habían construido una casa encima de otra casa encima de otra casa, y ahora nadie sabía qué pasaba cuando tocabas algo.

Este caso explica cómo tiré todo y construí desde cero un sistema diseñado específicamente para un catálogo industrial técnico. Con código real, decisiones fundamentadas y resultados medibles.

El problema

Lo primero que hice fue conectarme por SSH y activar el log de consultas de MySQL. Abrí una ficha de producto cualquiera —un perfil de silicona para sellado ferroviario— y conté las queries.

45 consultas. Para mostrar una página con título, descripción, tres imágenes y una tabla de propiedades técnicas.

¿Por qué tantas? Porque cada plugin hacía lo suyo sin coordinarse con los demás. El plugin de SEO consultaba la base de datos. El de caché consultaba para ver si había caché. El de traducciones consultaba tres veces por cada campo. El tema consultaba opciones globales en cada carga. Y así hasta 45.

El TTFB (Time To First Byte) estaba en 890ms. Eso significa que el servidor tardaba casi un segundo en empezar a enviar datos, antes siquiera de que el navegador pudiera renderizar nada.

  • 23 plugins activos sin control sobre dependencias
  • Tiempo de carga: 6.2 segundos
  • TTFB: 890ms (casi un segundo solo para empezar)
  • 45 consultas MySQL por cada ficha de producto
  • 4 vulnerabilidades activas, 2 de ellas críticas
  • Catálogo estático imposible de escalar
  • Ausencia total de Schema.org

Para una empresa industrial donde el comprador técnico tiene 15 pestañas abiertas comparando proveedores, eso es un suicidio comercial.

La decisión: tirar todo y construir desde cero

Había dos opciones. La primera era optimizar lo existente: desactivar plugins, instalar caché agresivo, rezar para que no se rompiera nada. La segunda era migrar a un sistema propio diseñado específicamente para lo que ProSilicones64 necesitaba.

Elegí la segunda. ProSilicones64 no es una tienda online ni un blog corporativo. Es un fabricante industrial con un catálogo técnico complejo: 30 productos, 19 series de silicona con propiedades diferentes, 10 sectores industriales, 127 normas y certificaciones.

WordPress no está pensado para esto. Puedes forzarlo con plugins de custom fields y taxonomías personalizadas, pero al final tienes un monstruo que nadie entiende y que se rompe cada vez que actualizas algo.

6.2s Tiempo de carga
890ms TTFB
23 Plugins activos
4 Vulnerabilidades

La arquitectura: PHP directo, MySQL relacional, cero dependencias

No usé Laravel ni Symfony. No porque sean malos —son frameworks excelentes— sino porque para este proyecto añadían complejidad sin beneficio real. ProSilicones64 no necesita un ORM que abstraiga la base de datos; necesita consultas SQL optimizadas que devuelvan exactamente lo que la página necesita mostrar.

Cada controlador hace exactamente una cosa. El controlador de ficha de producto llama al servicio de productos, que llama al repositorio, que ejecuta una única consulta SQL con los JOINs necesarios. Una petición, una consulta, una respuesta.

Arquitectura de carpetas

  • /app/controllers → Reciben la petición, llaman al servicio, devuelven la vista
  • /app/services → Lógica de negocio: qué series aplican a qué sectores
  • /app/repositories → Consultas SQL puras, una función por cada necesidad
  • /app/views → PHP plano con HTML, sin motor de plantillas

Base de datos relacional diseñada para el negocio

  • productos → categorías: extrusión, moldeo, cauchos técnicos, láminas
  • series_silicona → 19 series con temperatura (-60°C a +300°C) y dureza (30-90 Shore A)
  • sectores → ferroviario, médico, alimentario, aeronáutico...
  • normas_certificaciones → 127 registros: ISO, EN 45545-2, FDA, USP Class VI
  • producto_serie_sector → tabla pivote que conecta todo

Sistema de caché en tres niveles

  • Nivel 1: OPcache de PHP — bytecode compilado en memoria
  • Nivel 2: Caché de consultas — resultado en JSON con timestamp, invalidación por trigger
  • Nivel 3: Caché HTTP — cabeceras Cache-Control para navegador y CDN

SEO técnico real

  • Schema.org Product en todas las fichas con propiedades técnicas
  • URLs limpias: de /producto/?id=847&cat=3 a /productos/perfiles-silicona-ferroviario/
  • Redirecciones 301 para no perder enlaces externos
  • Sitemap XML dinámico generado desde la base de datos

Los resultados: números reales, no proyecciones

Después de tres meses con el nuevo sistema en producción, estos son los datos comparados. El último número es el que importa: de 8 solicitudes mensuales a 31. No porque el diseño sea más bonito —es prácticamente igual— sino porque la web carga rápido, los productos se encuentran fácilmente, y el formulario de contacto funciona sin errores de JavaScript.

Comparativa antes/después

Métrica WordPress (antes) Sistema custom (después)
Tiempo de carga 6.2s 1.1s
TTFB 890ms 180ms
Consultas SQL por página 45 8
Vulnerabilidades activas 4 0
Plugins/dependencias 23 0
Páginas válidas en Search Console 68% 94%
Solicitudes de presupuesto/mes 8 31

Conclusión

Este proyecto me confirmó algo que ya intuía: para empresas industriales con catálogos técnicos, WordPress es la opción incorrecta. No porque sea malo, sino porque está diseñado para otro tipo de contenido.

Un blog personal, una web corporativa con cinco páginas, una tienda online estándar... para eso WordPress funciona perfectamente. Pero cuando tienes relaciones complejas entre productos, series, sectores y normativas, necesitas una base de datos que refleje esa complejidad.

ProSilicones64 ahora tiene una web que puede crecer sin degradarse. Añadir una nueva serie de silicona es insertar filas en la base de datos, no instalar otro plugin. Añadir un nuevo sector es crear relaciones, no hackear shortcodes.

Y cuando dentro de cinco años quieran rediseñar la parte visual, podrán hacerlo sin tocar la lógica de negocio. Porque están separadas. Porque así se diseñan los sistemas que duran.

Si tu catálogo técnico está montado sobre WordPress y notas que cada vez va más lento, que cada actualización rompe algo, o que los técnicos de compras abandonan antes de llegar al formulario de contacto... probablemente estés en la misma situación que ProSilicones64 hace un año. Puedo hacer un diagnóstico técnico de tu web: medir tiempos reales, contar consultas, identificar cuellos de botella, evaluar vulnerabilidades. Sin compromiso, sin humo. Datos verificables sobre los que tomar decisiones.

Solicitar diagnóstico técnico

Adrián Morín

Desarrollador y arquitectura visual

Responsable del desarrollo técnico, diseño de interfaces y arquitectura web sin dependencias.