JSDC × DevFrontier: performance, SEO y AEO son ahora la misma cadena

Primera edición del meetup DevFrontier — la evolución de JSDC, la comunidad JavaScript de Taiwán, reorientada a la era AI. La charla principal: 邱柏鈞 Leo, Senior Frontend Engineer del Growth Team de KKday, sobre 效能驅動成長 — crecimiento impulsado por performance.

El argumento de negocio

Los datos de Think With Google que abren la charla: con 3 segundos de carga, el bounce rate sube 32% respecto a 1 segundo, y el 53% de los usuarios móviles abandona. Optimizar Core Web Vitals tiene un techo de mejora de conversión del +20%.

這不是耐心問題——這是商業損失。 No es un problema de paciencia — es pérdida de negocio.

Mi traducción a backend: es exactamente cuando tu /api/checkout tiene un P99 de 3 segundos. No es un problema técnico abstracto; es abandono de carrito medible en facturación.

¿Qué es AEO?

Answer Engine Optimization: antes optimizabas para el algoritmo de Google; ahora también necesitas que Google AI Overview, Gemini, ChatGPT, Claude y Perplexity te “entiendan” — porque el resultado ya no es un clic hacia tu página, sino que la IA cite tu contenido al responder.

Con datos propios de KKday (84 citas de AI Overview analizadas): el 73% de las fuentes citadas están en el top 10 de SEO — pero rankear #1 no garantiza nada. Su contraejemplo: la keyword “大阪一日遊 行程規劃” con SEO #1 no fue citada nunca, porque era una página de listado de productos. Las páginas citadas eran artículos-guía en posición #5. El criterio de la IA es brutal en su simpleza: ¿esta página responde directamente la pregunta del usuario? La AI Overview no premia autoridad de dominio; premia utilidad directa.

La migración: de CSR + prerender.io a Nuxt SSR

KKday venía de Vue CSR puro con un BFF en PHP, pagando prerender.io para que los bots vieran algo. La arquitectura nueva: CloudFront (CDN cachea HTML completo) → Nuxt (SSR + BFF) con dos capas de caché (memoria local + Redis).

Las piezas que más me resonaron, con su equivalente Spring Boot:

  • BFF paralelo: pasar de llamadas seriales (~360ms) a Promise.all (~130ms) impacta directo en TTFB y LCP. Es CompletableFuture.allOf() con @Async.
  • Data stratification: en la misma tarjeta de producto, título y descripción van por SSR + CDN (estático), pero precio y stock van client-side directo al BFF sin caché — si el precio se cacheara en CDN, un usuario vería el precio de otro. Es @Cacheable selectivo: cacheas los detalles del producto, nunca el precio.
  • Caching multinivel para flash sales: 100.000 requests simultáneos → 99.000 los absorbe la caché de memoria (~0,1ms), 999 Redis (~2ms), y 1 solo request llega al microservicio. El patrón Caffeine (L1) + Redis (L2) de toda la vida.
  • El bug de los dos CDN: imágenes rotas intermitentes y flashes del layout de desktop en móvil — misma raíz: Cloudflare y CloudFront respondiendo la misma URL con políticas de caché distintas (304 vs 200) sobre un sitio con HTML diferente por dispositivo. Es un @Cacheable sin Vary: User-Agent. El fix: Cache-Control: no-store hacia el browser.

Los AI bots ya son el 2º mayor tráfico de bots

Datos de Cloudflare Radar y HUMAN Security: los AI bots crecieron +187% interanual y ya son la segunda categoría de tráfico bot, solo detrás de search. Y el 49,9% de ese tráfico no es para indexar — es para entrenar modelos. KKday lo confirma en sus propios logs de Kibana: Applebot disparado (+124% en un mes) con Apple Intelligence expandiéndose.

La decisión estratégica que cada sitio debe tomar: 給 AI 爬?還是不給? — ¿dejas que la IA te rastree o no? El control práctico es robots.txt + reglas de WAF (Cloudflare mantiene la lista de user-agents por ti), decidiendo por separado search=yes y ai-train=no.

La cadena completa

El cierre de Leo une todo:

  1. La performance te gana el ranking (SEO)
  2. El ranking te da la oportunidad de ser citado por la IA (AEO)
  3. Ser citado te mantiene visible en la era zero-click

Estas tres cosas ya son la misma cadena — y la performance es el punto de partida. Si no estás citado, no existes, aunque seas #1 en Google.