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. EsCompletableFuture.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
@Cacheableselectivo: 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 (
304vs200) sobre un sitio con HTML diferente por dispositivo. Es un@CacheablesinVary: User-Agent. El fix:Cache-Control: no-storehacia 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:
- La performance te gana el ranking (SEO)
- El ranking te da la oportunidad de ser citado por la IA (AEO)
- 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.