Informe técnico · Confidencial

Auditoría de sitio — cocoon.com.co

Caché, rendimiento, imágenes, WooCommerce, seguridad y calidad de la base de usuarios.
Fecha 25 ago 2026 Alcance WordPress + WooCommerce, producción Base de datos 304.4 MB Usuarios 841
4
hallazgos críticos
6
hallazgos de atención
76
cuentas spam sin pedidos
F
nota Security Headers
32
rendimiento móvil (PageSpeed)
8.1s
LCP móvil
01

Caché — de WP Rocket a LiteSpeed Cache

El sitio corre hoy sin ningún sistema de caché. Esta es la causa de la pantalla en blanco al reactivar el plugin — y también la razón de que el rendimiento medido externamente (sección 02) sea tan bajo.

CríticoCarpeta del plugin renombrada, residuos sin limpiar

La carpeta fue renombrada de wp-rocket a wp-rocket_old en algún apagado de emergencia previo. El plugin está completo e intacto (v3.19.1.2, PHP 7.3+ requerido, cumplido). El problema es lo que quedó atrás: WP_CACHE sigue en true en wp-config.php, el drop-in advanced-cache.php apunta a la ruta antigua (por eso hoy no hace nada), y persisten wp-rocket-config/ y la opción wp_rocket_settings del último uso. Al reactivar, esa mezcla de estado nuevo y residuos viejos es la causa de la pantalla en blanco.

RecomendaciónNo reactivar WP Rocket — pasar a LiteSpeed Cache

Banahosting corre sobre LiteSpeed Web Server (LSWS), no Apache/Nginx genérico. Eso cambia cuál es el plugin correcto:

Caché a nivel de servidor, no de PHP. LiteSpeed Cache (LSCache) es un módulo integrado al propio servidor web: una página cacheada se sirve directo desde LSWS, sin que WordPress ni PHP lleguen a ejecutarse. WP Rocket es un plugin PHP — incluso una página "cacheada" suya obliga a inicializar WordPress primero. Con el TTFB medido en 4.4s en móvil (sección 02), ese arranque de PHP es exactamente el cuello de botella, y es el que LSCache elimina de raíz.

Funciones premium de WP Rocket, gratis aquí. El plugin oficial "LiteSpeed Cache" no tiene costo y ya incluye lo que en WP Rocket es de pago: ESI (Edge Side Includes) para que el carrito/mini-cart de WooCommerce siga siendo dinámico dentro de una página cacheada sin invalidar todo el caché, CDN + optimización de imágenes vía QUIC.cloud, combinación/minificación de CSS y JS, precalentamiento de caché por crawler, e integración nativa con Redis/Memcached (sección 02) desde el mismo plugin.

Plan: limpiar igualmente los residuos de WP Rocket (drop-in viejo, wp-rocket-config/, WP_CACHE en false temporalmente) — pero en vez de reactivar WP Rocket, instalar y configurar el plugin oficial LiteSpeed Cache, que es la opción diseñada específicamente para este hosting.

02

Rendimiento del servidor

Medido con PageSpeed Insights sobre datos reales de usuarios (últimos 28 días) — el sitio reprueba la evaluación de Core Web Vitals en ambos dispositivos.

📱 MóvilNo superada
32
Rendimiento
Accesibilidad 74 · SEO 85
LCP8.1 s
TTFB4.4 s
FCP5.2 s
INP435 ms
🖥️ EscritorioNo superada
47
Rendimiento
Accesibilidad 74 · SEO 85
LCP2.7 s
TTFB1.2 s
FCP1.7 s
INP143 ms

El TTFB (4.4s en móvil, 1.2s en escritorio) es el dato más revelador: es tiempo puro de servidor, antes de que llegue una sola línea de HTML al navegador. Coincide exactamente con lo diagnosticado en la sección 01 — sin caché de página ni de objetos, cada visita ejecuta PHP y consultas a la base de datos desde cero. Es la métrica que un caché a nivel de servidor como LiteSpeed Cache ataca directamente.

CríticoSin caché de objetos — Redis no está activo

No existe object-cache.php, ni constantes WP_REDIS_*, ni plugin de Redis/Memcached. Cada carga vuelve a consultar la base de datos completa. Junto con WP Rocket apagado, hoy no hay ningún tipo de caché corriendo en el sitio.

AtenciónOPcache saturado — 0 MB libres, 60.6% de aciertos

Con memoria libre en cero, el servidor recompila scripts PHP constantemente en vez de servirlos desde caché. Un hit rate saludable debería superar 99%. Requiere que el hosting suba opcache.memory_consumption.

AtenciónWP_MEMORY_LIMIT en 40 MB, muy bajo

PHP permite 512 MB, pero WordPress se autolimita a 40 MB internamente. Con Elementor, WooCommerce, Automator y Woodmart activos a la vez, es un candidato a errores de memoria agotada en admin y checkout — otra causa posible de pantallas en blanco.

En ordenAutoload de opciones — 0.37 MB, 760 filas

Saludable para el tamaño del sitio. Los 2,657 transients y 1,559 revisiones de posts acumuladas sí aportan al peso de la base de datos y valen limpieza de rutina.

03

Imágenes

774.6 MB en 8,085 archivos. En general bien gestionado — no es un problema estructural.

MétricaValorLectura
Tamaño promedio (muestra de 300)163 KBRazonable
En formato WebP192 / 300WebP Express activo, conversión parcial
Aún en JPG/PNG108 / 300Confirmar que WebP Express cubra el histórico
Mayores a 500 KB23Puntual, no masivo
Mayores a 1 MB7Banners de home y una landing — comprimir manualmente
04

WooCommerce

Mejora disponibleHPOS (High-Performance Order Storage) no está activado

Los pedidos siguen en wp_posts en vez de tablas dedicadas — el modelo legado. Activar HPOS acelera notablemente listados de pedidos y reportes. Antes de activarlo: actualizar WooCommerce Mercado Pago (versión pendiente) y activar primero en modo sincronización.

05

Plugins — consolidación y reemplazos

De 40 plugins activos, uno concentra el mayor sobrecosto de rendimiento sin necesidad: Slider Revolution ya se puede reemplazar con una herramienta que el sitio ya tiene licenciada.

ReemplazarSlider Revolution no es ideal para un ecommerce

Está activo y en uso real: versión 7.1.7, con 3 sliders configurados que aparecen en 4 páginas publicadas del sitio (probablemente home y algunas categorías).

Por qué pesa donde más duele. Slider Revolution es históricamente uno de los plugins más pesados del ecosistema WordPress: carga su propio motor de animación (basado en GreenSock/TweenMax) más su CSS y JS del editor de capas, con frecuencia en el sitio completo y no solo en la página donde vive el slider. Eso añade peso justo al inicio de la carga — la sección 02 ya mostró un LCP de 8.1s en móvil y un TTFB de 4.4s; un slider pesado en el hero es, casi siempre, literalmente el elemento LCP que el navegador está esperando pintar.

Y no aporta conversión a cambio. Los sliders de banners rotativos son un patrón con desempeño débil en ecommerce: la gran mayoría de clics caen sobre la primera diapositiva (los usuarios no esperan a que rote), y al tener varias imágenes candidatas a "elemento más grande visible", el navegador tarda más en decidir cuál precargar — el slider termina perjudicando la métrica de carga sin compensarlo en clics reales.

Superficie de mantenimiento extra. Es un plugin premium de terceros con historial de vulnerabilidades críticas reportadas por su gran base de instalación — un plugin activo menos es un parche menos que vigilar.

Ya lo tienenElementor Pro cubre lo mismo, sin plugin adicional

El sitio ya tiene Elementor Pro activo y licenciado (v4.1.2) — no hace falta comprar ni instalar nada nuevo. Su widget nativo de Carrusel de imágenes (y el carrusel de productos, pensado para WooCommerce) cubre el mismo caso de uso de banners rotativos, pero reutiliza los assets de Elementor que el sitio ya carga en cada página en vez de sumar una segunda librería de animación.

Alternativa aún más liviana: para un hero de home, muchas veces un banner estático con imagen de fondo + botón CTA dentro de una sección de Elementor rinde mejor que cualquier slider — sin JavaScript de rotación, sin ambigüedad de qué imagen es el LCP, y con el control creativo completo que ya conocen del builder.

Migración sugerida: recrear los 3 sliders actuales como secciones o carruseles de Elementor Pro en las 4 páginas donde se usan, confirmar visualmente, y desactivar/eliminar Slider Revolution.

RevisarDos plugins de Mailchimp activos a la vez

Mailchimp for WooCommerce (sincroniza pedidos y clientes) y MC4WP: Mailchimp for WordPress (formularios de suscripción) hacen trabajos distintos y pueden coexistir de forma legítima, pero vale la pena confirmar que no haya dos integraciones apuntando a la misma audiencia de Mailchimp — el riesgo típico es doble registro o eventos duplicados hacia la misma lista.

06

Seguridad

Nota FSecurity Headers (securityheaders.com) — reprobado

Escaneo externo confirma la falta total de headers de seguridad HTTP: Strict-Transport-Security, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy y Permissions-Policy — los 6 marcados en rojo. Nota F, la más baja de la escala.

Resultado de Security Headers para cocoon.com.co, nota F
Captura: securityheaders.com — 26 ago 2026
CríticoSin plugin de seguridad, sin 2FA, sin límite de intentos de login

Cero coincidencias con Wordfence, Sucuri, iThemes, Loginizer o cualquier solución de 2FA. Las 3 cuentas de administrador no tienen segundo factor. Positivo: no existe el usuario admin y las 3 cuentas admin son identificables (David.Admin.Soul, JNeisa.Cocoon.Admin, Soult Agency).

CríticoSin CAPTCHA en registro/login/checkout

Combinado con el patrón de cuentas spam de la sección 6, esto deja la puerta abierta a bots de card testing (prueba de tarjetas robadas con montos pequeños en checkout). El volumen actual es bajo, pero nada lo está frenando.

AtenciónCómo corregir los headers ausentes

El sitio está detrás de Cloudflare — se resuelve con una Transform Rule ahí, sin tocar WordPress ni arriesgar el sitio en producción.

AtenciónAPI REST expone usuarios sin autenticar

/wp-json/wp/v2/users responde 200 públicamente, exponiendo IDs y páginas de autor de cuentas de clientes que no deberían tenerlas. XML-RPC también sigue habilitado, vector clásico de fuerza bruta amplificada.

MenorEditor de archivos de wp-admin sigue activo

DISALLOW_FILE_EDIT en false — si una sesión admin se compromete, se puede inyectar código PHP directo desde el panel. Cambio de una línea, sin impacto funcional.

07

Calidad de la base de usuarios

De 841 usuarios totales, 78 (9.3%) coinciden con patrones típicos de registro por bots. Solo 2 generaron un pedido real — se recomienda conservarlos. Los 76 restantes nunca compraron y se acumulan desde junio de 2023 hasta hoy, sin interrupción, confirmando que el registro nunca tuvo protección anti-bot.

PatrónCuentasEjemplo
Truco de puntos en Gmail~45[email protected]
Dominios desechables / temporales~18[email protected]
Login aleatorio sin vocales~19[email protected]
Cuenta de prueba1[email protected]

Cuentas con pedido real — mantener (probablemente falsos positivos: clientes reales con hábitos de email inusuales):

IDUsuarioEmailRegistradoPedidos
44yaylyn2014[email protected]2023-06-061
558gloria.ortiz[email protected]2025-01-051

76 cuentas sin ningún pedido — candidatas a limpieza:

IDUsuarioEmailRegistradoMotivo
33gfhfdgfjfh[email protected]2023-05-20login aleatorio
50levte.re.nt.ev3[email protected]2023-06-10truco gmail
51l.evtere.n.tev3[email protected]2023-06-10truco gmail
63ma.k.s.yatin.ae4[email protected]2023-06-23truco gmail
64op.a.ry.s.h.e.va4[email protected]2023-06-23truco gmail
65opa.ry.she.va4[email protected]2023-06-23truco gmail
66s.e.r.go.v.al.ili.y.a5[email protected]2023-06-23truco gmail
67ma.k.s.ya.ti.na.e.4[email protected]2023-06-23truco gmail
68ser.g.o.va.li.l.iy.a.5[email protected]2023-06-23truco gmail
70m.o.no.ru.m.a.to.k.uro[email protected]2023-06-24truco gmail
71w.hi.s.ki.nm.tjdxa[email protected]2023-06-24truco gmail
72in.nar.z.ha.vs.kay.a1[email protected]2023-06-24truco gmail
73ko.za.rino.vv.i.taliy2[email protected]2023-06-24truco gmail
74mon.or.umat.ok.u.r.o[email protected]2023-06-24truco gmail
75w.h.iskin.m.t.j.d.xa[email protected]2023-06-24truco gmail
76k.ozarin.o.vvi.t.a.l.iy2[email protected]2023-06-25truco gmail
77innar.zhav.s.kaya1[email protected]2023-06-25truco gmail
142aqu.a.b.u.r.se.rv.i.ce2.0.21[email protected]2023-09-28truco gmail
193luz191217[email protected]2023-11-13login aleatorio
267genevapatterson[email protected]2023-12-23dominio desechable
286hwdnggdg5ci[email protected]2024-01-15login aleatorio
307dl.g.k.i.h.m.zo.s.b[email protected]2024-01-30truco gmail
365t.e.e.t.e.r.2.9t.ra.v[email protected]2024-03-30truco gmail
381gorse.c19.8.0.r.u.s.e.r.v[email protected]2024-04-23truco gmail
387l.i.d.e.r.pro.m.o2.0.1.5.su.p.e.r[email protected]2024-05-01truco gmail
389l.id.e.rp.romo2015su.per[email protected]2024-05-01truco gmail
390fdjfwxltpmt[email protected]2024-05-01login aleatorio
392sdvvvalccpt[email protected]2024-05-05login aleatorio
409ed.a.n.po.rt[email protected]2024-06-08truco gmail
503adriana.marinera.1.5[email protected]2024-10-13truco gmail
526plmd201222[email protected]2024-11-16login aleatorio
582info103[email protected]2025-02-20dominio desechable
639hfhfhfsdffg656[email protected]2025-08-10login aleatorio
642frxvpdhgnkn[email protected]2025-08-15login aleatorio
643vdcdprkwopr[email protected]2025-08-15login aleatorio
645launaamaya8522[email protected]2025-08-17dominio desechable
652ma.t.themas.t.e.r.ss.un.n.y[email protected]2025-08-22truco gmail
657fag.i.hun.7.07[email protected]2025-08-27truco gmail
658mat.tt.e.n.ly.s.h.l.u.b.el.y.[email protected]2025-08-30truco gmail
659mat.them.as.te.r.ssu.nn.y.[email protected]2025-08-30truco gmail
662cbpkqbcuqst[email protected]2025-09-01login aleatorio
671vffbixkyqpl[email protected]2025-09-27login aleatorio
673umqfmzcgp[email protected]2025-10-01login aleatorio
676danielaalvarado4857[email protected]2025-10-15dominio desechable
699ladyc8973[email protected]2025-11-25login aleatorio
729fa.g.ihun70.7[email protected]2026-01-30truco gmail
762b.8.5.2.4.758.[email protected]2026-03-19truco gmail
782ho.k.in.a.seani.ka.[email protected]2026-04-08truco gmail
787m.axd.l.ugy[email protected]2026-04-16truco gmail
791vtrosqbdcpl[email protected]2026-04-26login aleatorio
795f.a.gih.u.n.707[email protected]2026-05-01truco gmail
798jlrmqnnmpsi[email protected]2026-05-03login aleatorio
800fndfjljycsa[email protected]2026-05-04login aleatorio
802il26p8bdfsq9[email protected]2026-05-07login aleatorio
813mn4c3s2wzboj[email protected]2026-05-16login aleatorio
817glsi3jbb5vpv[email protected]2026-05-17login aleatorio
818hum.mer.t.o.ly.mpi.a[email protected]2026-05-17truco gmail
820ypzer0c00yk5[email protected]2026-05-18login aleatorio
822ma.rt.a.sp.e.llo.w.d.a.[email protected]2026-05-19truco gmail
831bblqkzrsmkr[email protected]2026-06-01login aleatorio
835hu.mme.r.toly.mpia[email protected]2026-06-06truco gmail
837h.u.m.me.r.t.o.l.y.m.p.ia[email protected]2026-06-07truco gmail
843rpqfqnrj[email protected]2026-06-18dominio desechable
844test[email protected]2026-06-18cuenta de prueba
845romanboss8408[email protected]2026-06-22dominio desechable
846h.otu.z.ap.oxih.e06.[email protected]2026-06-22truco gmail
847h.um.m.e.r.tol.y.m.pia[email protected]2026-06-24truco gmail
850katherinev8786[email protected]2026-07-09dominio desechable
853ireneh6977[email protected]2026-07-11dominio desechable
855teodoro_teodoro66[email protected]2026-07-16dominio desechable
857qdmmlathkkr[email protected]2026-07-20desechable + aleatorio
858corneliaw3883[email protected]2026-07-22dominio desechable
859avery-badillo[email protected]2026-07-24dominio desechable
860dyywfnlever[email protected]2026-07-25dominio desechable
862gb_carrolflannagan7395[email protected]2026-08-02dominio desechable
863info239[email protected]2026-08-03dominio desechable
08

Plan de acción

#AcciónImpactoRiesgo
1Limpiar residuos de WP Rocket e instalar LiteSpeed Cache en su lugar (aprovecha el servidor LiteSpeed de Banahosting)AltoBajo
2CAPTCHA en registro, login y checkoutAltoBajo
3Plugin de login + 2FA para las 3 cuentas adminAltoBajo
4Activar Redis object cacheAltoMedio — depende del hosting
5Subir WP_MEMORY_LIMIT a 256MMedio-altoMuy bajo
6Pedir al hosting subir memoria de OPcacheMedio-altoNinguno
7Headers de seguridad vía CloudflareMedioMuy bajo
8Actualizar Elementor, WooCommerce Mercado Pago y Google Site KitMedioBajo
9Migrar los 3 sliders de Slider Revolution a Elementor Pro y desactivar el pluginMedioBajo
10Desactivar XML-RPC y restringir /wp/v2/usersMedioBajo
11Activar HPOS en WooCommerce (tras actualizar Mercado Pago)MedioMedio
12Eliminar las 76 cuentas spam sin pedidos; comprimir imágenes >1MB; limpiar transients/revisiones; confirmar solapamiento de los dos plugins de MailchimpBajoMuy bajo
09

Trabajo realizado en esta fase

Después de la entrega de este diagnóstico se ejecutaron, en producción y vía el MCP de Novamira, los siguientes ajustes. Esta sección actualiza el estado del plan de acción de la sección 08.

480
Adjuntos huérfanos movidos a la papelera de medios (~280 MB)
1.064
Archivos sin registro en WP movidos a cuarentena (~82 MB)
2
Ajustes pendientes de terceros / decisión del cliente
ResueltoBase de datos: MyISAM → InnoDB

Se convirtieron las 72 tablas que quedaban en MyISAM a InnoDB. Verificado: 145 tablas InnoDB, 0 en MyISAM.

ResueltoWooCommerce: HPOS y caché de datos

Se activó almacenamiento de alto rendimiento (HPOS), caché de datos HPOS, límite de frecuencia en el pago e índices de búsqueda de texto (FTS) — se confirmó que la combinación es coherente y no genera conflictos entre sí.

ResueltoCron real del servidor

Se reemplazó el WP-Cron basado en visitas (que se estaba atrasando) por un cron real instalado en el servidor.

ResueltoResiduos de WP Rocket

Tras la desinstalación manual del plugin, se limpió la configuración y las opciones residuales que quedaron en la base de datos.

ResueltoLiteSpeed Cache: CSS asíncrono + UCSS

Se activó "Cargar CSS de forma asíncrona" (Critical CSS) y CSS no usado (UCSS) para reducir las solicitudes que bloquean el renderizado. Un primer intento rompió el carrusel de portada (Swiper detectaba 0 slides); se corrigió excluyendo la home de UCSS y se confirmó el carrusel funcionando con sus 4 slides.

ResueltoFormulario de mayoristas sin enviar correos

El formulario de Elementor en /ventas-al-por-mayor/ no tenía configurada la acción de envío de correo (submit_actions) pese a tener destinatarios definidos. Se corrigió y se verificó con un envío de prueba real.

ResueltoEntrega de correo SMTP (GoSMTP)

La verificación de certificado SSL fallaba por una cadena de certificados incompleta en el servidor de correo, agravado por un cruce de cifrado/puerto (TLS sobre el puerto 465, exclusivo de SSL implícito). Se corrigió el cifrado a SSL y se confirmó el envío en 417 ms.

ResueltoDots del carrusel de portada

Se rediseñaron los indicadores de paginación (fondo en píldora, punto activo más grande en el morado de marca) y se corrigió un desfase de índice en modo loop con solo 2 slides.

ResueltoAuditoría y limpieza de medios huérfanos

Se cruzaron los 847 adjuntos de la biblioteca contra su uso real en contenido, Elementor, galerías, imágenes de categoría, logo/ícono del sitio y widgets. Resultado: 367 en uso confirmado, 480 huérfanos movidos a la papelera (reversible) y 1.064 archivos sin registro en WordPress movidos a una carpeta de cuarentena. El vaciado definitivo de la papelera y de la cuarentena queda pendiente de confirmación del cliente.

Pendiente — depende del hostingLímite de memoria de OPcache

El OPcache está al 100% de su capacidad (192/192 MB, cache_full: true) con una tasa de aciertos de apenas 45%. El límite está fijado en un archivo de servidor (zzz-opcache.ini) que no se puede modificar desde cPanel ni desde el php.ini de la cuenta. Se preparó el ticket con estos datos para que Banahosting suba el límite a 256–512 MB.

Pendiente — decisión del clientePágina "Inicio Cocoon" (ID 3945)

Ya no es la página de inicio (el home real es la página "Cocoon"), pero sigue publicada y era el origen de la mayoría de los banners huérfanos "por revisar". Queda pendiente decidir si se archiva.