[{"data":1,"prerenderedAt":2422},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fes\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimizacion":11},{"i18nKey":4,"paths":5},"tech-001-2026-05",{"de":6,"es":7,"fr":8,"it":9,"ru":10},"\u002Fde\u002Ftech\u002Fnuxt3-cloudflare-pages-lcp-optimierung","\u002Fes\u002Ftech\u002Fnuxt3-cloudflare-pages-lcp-optimizacion","\u002Ffr\u002Ftech\u002Fnuxt-3-cloudflare-pages-optimisation-lcp","\u002Fit\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-10s-a-2s","\u002Fru\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimizatsiya",{"_path":12,"_dir":13,"_draft":14,"_partial":14,"_locale":15,"title":16,"description":17,"publishedAt":18,"modifiedAt":18,"category":13,"i18nKey":4,"tags":19,"readingTime":25,"author":26,"body":27,"_type":2416,"_id":2417,"_source":2418,"_file":2419,"_stem":2420,"_extension":2421},"\u002Fes\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimizacion","tech",false,"","Nuxt 3 + Cloudflare Pages: LCP de 10s a 2s","Fuentes auto-alojadas, hidratación lazy, content-visibility y caché edge reducen LCP un 80%. Códigos reales y benchmarks.","2026-05-28",[20,21,22,23,24],"nuxt3","web-performance","cloudflare-pages","core-web-vitals","edge-computing",8,"Roibase",{"type":28,"children":29,"toc":2402},"root",[30,47,54,75,104,415,428,749,762,768,781,788,801,1256,1276,1282,1295,1399,1412,1418,1431,1521,1532,1538,1550,1558,1578,1584,1596,1743,1748,2117,2123,2299,2304,2310,2323,2349,2354,2360,2383,2396],{"type":31,"tag":32,"props":33,"children":34},"element","p",{},[35,38,45],{"type":36,"value":37},"text","Cloudflare Pages + Nuxt 3 prometen caché edge y deployment sin configuración, pero los Core Web Vitals requieren más. En un proyecto e-commerce en producción, LCP alcanzaba 10.2 segundos y TBT 2190 milisegundos. Google Fonts, hidratación client-side, CSS global y JavaScript síncrono bloqueaban el renderizado. Con fuentes auto-alojadas, hidratación lazy, la propiedad CSS ",{"type":31,"tag":39,"props":40,"children":42},"code",{"className":41},[],[43],{"type":36,"value":44},"content-visibility",{"type":36,"value":46}," y una estrategia de caché edge, redujimos LCP a 2.1 segundos y TBT a 180 milisegundos. Aquí compartimos la implementación paso a paso y los compromisos involucrados.",{"type":31,"tag":48,"props":49,"children":51},"h2",{"id":50},"google-fonts-bloqueando-render-38s-perdidos",[52],{"type":36,"value":53},"Google Fonts Bloqueando Render: 3.8s Perdidos",{"type":31,"tag":32,"props":55,"children":56},{},[57,59,65,67,73],{"type":36,"value":58},"Las fuentes servidas desde CDN de Google Fonts mediante ",{"type":31,"tag":39,"props":60,"children":62},{"className":61},[],[63],{"type":36,"value":64},"@import",{"type":36,"value":66}," o ",{"type":31,"tag":39,"props":68,"children":70},{"className":69},[],[71],{"type":36,"value":72},"\u003Clink>",{"type":36,"value":74}," bloquean el renderizado. El riesgo de FOIT (Flash of Invisible Text) y las latencias de 3+ round-trips impactan directamente el LCP. En Chrome DevTools Lighthouse, la recomendación \"Eliminate render-blocking resources\" mostraba 3.8 segundos de pérdida.",{"type":31,"tag":32,"props":76,"children":77},{},[78,80,86,88,94,96,102],{"type":36,"value":79},"Solución: auto-alojar las fuentes. Usamos el paquete npm ",{"type":31,"tag":39,"props":81,"children":83},{"className":82},[],[84],{"type":36,"value":85},"@fontsource\u002Finter",{"type":36,"value":87}," para copiar archivos Woff2 al directorio ",{"type":31,"tag":39,"props":89,"children":91},{"className":90},[],[92],{"type":36,"value":93},"public\u002Ffonts",{"type":36,"value":95},". En la configuración de Nuxt, agregamos ",{"type":31,"tag":39,"props":97,"children":99},{"className":98},[],[100],{"type":36,"value":101},"preload",{"type":36,"value":103},":",{"type":31,"tag":105,"props":106,"children":110},"pre",{"code":107,"language":108,"meta":15,"className":109,"style":15},"\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  app: {\n    head: {\n      link: [\n        {\n          rel: 'preload',\n          as: 'font',\n          type: 'font\u002Fwoff2',\n          href: '\u002Ffonts\u002Finter-latin-400-normal.woff2',\n          crossorigin: 'anonymous'\n        },\n        {\n          rel: 'preload',\n          as: 'font',\n          type: 'font\u002Fwoff2',\n          href: '\u002Ffonts\u002Finter-latin-600-normal.woff2',\n          crossorigin: 'anonymous'\n        }\n      ]\n    }\n  }\n})\n","typescript","language-typescript shiki shiki-themes github-dark",[111],{"type":31,"tag":39,"props":112,"children":113},{"__ignoreMap":15},[114,126,153,162,171,180,189,209,226,244,262,276,285,293,309,325,341,358,370,379,388,397,406],{"type":31,"tag":115,"props":116,"children":119},"span",{"class":117,"line":118},"line",1,[120],{"type":31,"tag":115,"props":121,"children":123},{"style":122},"--shiki-default:#6A737D",[124],{"type":36,"value":125},"\u002F\u002F nuxt.config.ts\n",{"type":31,"tag":115,"props":127,"children":129},{"class":117,"line":128},2,[130,136,141,147],{"type":31,"tag":115,"props":131,"children":133},{"style":132},"--shiki-default:#F97583",[134],{"type":36,"value":135},"export",{"type":31,"tag":115,"props":137,"children":138},{"style":132},[139],{"type":36,"value":140}," default",{"type":31,"tag":115,"props":142,"children":144},{"style":143},"--shiki-default:#B392F0",[145],{"type":36,"value":146}," defineNuxtConfig",{"type":31,"tag":115,"props":148,"children":150},{"style":149},"--shiki-default:#E1E4E8",[151],{"type":36,"value":152},"({\n",{"type":31,"tag":115,"props":154,"children":156},{"class":117,"line":155},3,[157],{"type":31,"tag":115,"props":158,"children":159},{"style":149},[160],{"type":36,"value":161},"  app: {\n",{"type":31,"tag":115,"props":163,"children":165},{"class":117,"line":164},4,[166],{"type":31,"tag":115,"props":167,"children":168},{"style":149},[169],{"type":36,"value":170},"    head: {\n",{"type":31,"tag":115,"props":172,"children":174},{"class":117,"line":173},5,[175],{"type":31,"tag":115,"props":176,"children":177},{"style":149},[178],{"type":36,"value":179},"      link: [\n",{"type":31,"tag":115,"props":181,"children":183},{"class":117,"line":182},6,[184],{"type":31,"tag":115,"props":185,"children":186},{"style":149},[187],{"type":36,"value":188},"        {\n",{"type":31,"tag":115,"props":190,"children":192},{"class":117,"line":191},7,[193,198,204],{"type":31,"tag":115,"props":194,"children":195},{"style":149},[196],{"type":36,"value":197},"          rel: ",{"type":31,"tag":115,"props":199,"children":201},{"style":200},"--shiki-default:#9ECBFF",[202],{"type":36,"value":203},"'preload'",{"type":31,"tag":115,"props":205,"children":206},{"style":149},[207],{"type":36,"value":208},",\n",{"type":31,"tag":115,"props":210,"children":211},{"class":117,"line":25},[212,217,222],{"type":31,"tag":115,"props":213,"children":214},{"style":149},[215],{"type":36,"value":216},"          as: ",{"type":31,"tag":115,"props":218,"children":219},{"style":200},[220],{"type":36,"value":221},"'font'",{"type":31,"tag":115,"props":223,"children":224},{"style":149},[225],{"type":36,"value":208},{"type":31,"tag":115,"props":227,"children":229},{"class":117,"line":228},9,[230,235,240],{"type":31,"tag":115,"props":231,"children":232},{"style":149},[233],{"type":36,"value":234},"          type: ",{"type":31,"tag":115,"props":236,"children":237},{"style":200},[238],{"type":36,"value":239},"'font\u002Fwoff2'",{"type":31,"tag":115,"props":241,"children":242},{"style":149},[243],{"type":36,"value":208},{"type":31,"tag":115,"props":245,"children":247},{"class":117,"line":246},10,[248,253,258],{"type":31,"tag":115,"props":249,"children":250},{"style":149},[251],{"type":36,"value":252},"          href: ",{"type":31,"tag":115,"props":254,"children":255},{"style":200},[256],{"type":36,"value":257},"'\u002Ffonts\u002Finter-latin-400-normal.woff2'",{"type":31,"tag":115,"props":259,"children":260},{"style":149},[261],{"type":36,"value":208},{"type":31,"tag":115,"props":263,"children":265},{"class":117,"line":264},11,[266,271],{"type":31,"tag":115,"props":267,"children":268},{"style":149},[269],{"type":36,"value":270},"          crossorigin: ",{"type":31,"tag":115,"props":272,"children":273},{"style":200},[274],{"type":36,"value":275},"'anonymous'\n",{"type":31,"tag":115,"props":277,"children":279},{"class":117,"line":278},12,[280],{"type":31,"tag":115,"props":281,"children":282},{"style":149},[283],{"type":36,"value":284},"        },\n",{"type":31,"tag":115,"props":286,"children":288},{"class":117,"line":287},13,[289],{"type":31,"tag":115,"props":290,"children":291},{"style":149},[292],{"type":36,"value":188},{"type":31,"tag":115,"props":294,"children":296},{"class":117,"line":295},14,[297,301,305],{"type":31,"tag":115,"props":298,"children":299},{"style":149},[300],{"type":36,"value":197},{"type":31,"tag":115,"props":302,"children":303},{"style":200},[304],{"type":36,"value":203},{"type":31,"tag":115,"props":306,"children":307},{"style":149},[308],{"type":36,"value":208},{"type":31,"tag":115,"props":310,"children":312},{"class":117,"line":311},15,[313,317,321],{"type":31,"tag":115,"props":314,"children":315},{"style":149},[316],{"type":36,"value":216},{"type":31,"tag":115,"props":318,"children":319},{"style":200},[320],{"type":36,"value":221},{"type":31,"tag":115,"props":322,"children":323},{"style":149},[324],{"type":36,"value":208},{"type":31,"tag":115,"props":326,"children":328},{"class":117,"line":327},16,[329,333,337],{"type":31,"tag":115,"props":330,"children":331},{"style":149},[332],{"type":36,"value":234},{"type":31,"tag":115,"props":334,"children":335},{"style":200},[336],{"type":36,"value":239},{"type":31,"tag":115,"props":338,"children":339},{"style":149},[340],{"type":36,"value":208},{"type":31,"tag":115,"props":342,"children":344},{"class":117,"line":343},17,[345,349,354],{"type":31,"tag":115,"props":346,"children":347},{"style":149},[348],{"type":36,"value":252},{"type":31,"tag":115,"props":350,"children":351},{"style":200},[352],{"type":36,"value":353},"'\u002Ffonts\u002Finter-latin-600-normal.woff2'",{"type":31,"tag":115,"props":355,"children":356},{"style":149},[357],{"type":36,"value":208},{"type":31,"tag":115,"props":359,"children":361},{"class":117,"line":360},18,[362,366],{"type":31,"tag":115,"props":363,"children":364},{"style":149},[365],{"type":36,"value":270},{"type":31,"tag":115,"props":367,"children":368},{"style":200},[369],{"type":36,"value":275},{"type":31,"tag":115,"props":371,"children":373},{"class":117,"line":372},19,[374],{"type":31,"tag":115,"props":375,"children":376},{"style":149},[377],{"type":36,"value":378},"        }\n",{"type":31,"tag":115,"props":380,"children":382},{"class":117,"line":381},20,[383],{"type":31,"tag":115,"props":384,"children":385},{"style":149},[386],{"type":36,"value":387},"      ]\n",{"type":31,"tag":115,"props":389,"children":391},{"class":117,"line":390},21,[392],{"type":31,"tag":115,"props":393,"children":394},{"style":149},[395],{"type":36,"value":396},"    }\n",{"type":31,"tag":115,"props":398,"children":400},{"class":117,"line":399},22,[401],{"type":31,"tag":115,"props":402,"children":403},{"style":149},[404],{"type":36,"value":405},"  }\n",{"type":31,"tag":115,"props":407,"children":409},{"class":117,"line":408},23,[410],{"type":31,"tag":115,"props":411,"children":412},{"style":149},[413],{"type":36,"value":414},"})\n",{"type":31,"tag":32,"props":416,"children":417},{},[418,420,426],{"type":36,"value":419},"En CSS, definimos ",{"type":31,"tag":39,"props":421,"children":423},{"className":422},[],[424],{"type":36,"value":425},"@font-face",{"type":36,"value":427}," solo para los pesos utilizados:",{"type":31,"tag":105,"props":429,"children":433},{"code":430,"language":431,"meta":15,"className":432,"style":15},"\u002F* assets\u002Fcss\u002Ffonts.css *\u002F\n@font-face {\n  font-family: 'Inter';\n  font-style: normal;\n  font-weight: 400;\n  font-display: swap;\n  src: url('\u002Ffonts\u002Finter-latin-400-normal.woff2') format('woff2');\n}\n\n@font-face {\n  font-family: 'Inter';\n  font-style: normal;\n  font-weight: 600;\n  font-display: swap;\n  src: url('\u002Ffonts\u002Finter-latin-600-normal.woff2') format('woff2');\n}\n","css","language-css shiki shiki-themes github-dark",[434],{"type":31,"tag":39,"props":435,"children":436},{"__ignoreMap":15},[437,445,457,481,502,523,544,594,602,611,622,641,660,680,699,742],{"type":31,"tag":115,"props":438,"children":439},{"class":117,"line":118},[440],{"type":31,"tag":115,"props":441,"children":442},{"style":122},[443],{"type":36,"value":444},"\u002F* assets\u002Fcss\u002Ffonts.css *\u002F\n",{"type":31,"tag":115,"props":446,"children":447},{"class":117,"line":128},[448,452],{"type":31,"tag":115,"props":449,"children":450},{"style":132},[451],{"type":36,"value":425},{"type":31,"tag":115,"props":453,"children":454},{"style":149},[455],{"type":36,"value":456}," {\n",{"type":31,"tag":115,"props":458,"children":459},{"class":117,"line":155},[460,466,471,476],{"type":31,"tag":115,"props":461,"children":463},{"style":462},"--shiki-default:#79B8FF",[464],{"type":36,"value":465},"  font-family",{"type":31,"tag":115,"props":467,"children":468},{"style":149},[469],{"type":36,"value":470},": ",{"type":31,"tag":115,"props":472,"children":473},{"style":200},[474],{"type":36,"value":475},"'Inter'",{"type":31,"tag":115,"props":477,"children":478},{"style":149},[479],{"type":36,"value":480},";\n",{"type":31,"tag":115,"props":482,"children":483},{"class":117,"line":164},[484,489,493,498],{"type":31,"tag":115,"props":485,"children":486},{"style":462},[487],{"type":36,"value":488},"  font-style",{"type":31,"tag":115,"props":490,"children":491},{"style":149},[492],{"type":36,"value":470},{"type":31,"tag":115,"props":494,"children":495},{"style":462},[496],{"type":36,"value":497},"normal",{"type":31,"tag":115,"props":499,"children":500},{"style":149},[501],{"type":36,"value":480},{"type":31,"tag":115,"props":503,"children":504},{"class":117,"line":173},[505,510,514,519],{"type":31,"tag":115,"props":506,"children":507},{"style":462},[508],{"type":36,"value":509},"  font-weight",{"type":31,"tag":115,"props":511,"children":512},{"style":149},[513],{"type":36,"value":470},{"type":31,"tag":115,"props":515,"children":516},{"style":462},[517],{"type":36,"value":518},"400",{"type":31,"tag":115,"props":520,"children":521},{"style":149},[522],{"type":36,"value":480},{"type":31,"tag":115,"props":524,"children":525},{"class":117,"line":182},[526,531,535,540],{"type":31,"tag":115,"props":527,"children":528},{"style":462},[529],{"type":36,"value":530},"  font-display",{"type":31,"tag":115,"props":532,"children":533},{"style":149},[534],{"type":36,"value":470},{"type":31,"tag":115,"props":536,"children":537},{"style":462},[538],{"type":36,"value":539},"swap",{"type":31,"tag":115,"props":541,"children":542},{"style":149},[543],{"type":36,"value":480},{"type":31,"tag":115,"props":545,"children":546},{"class":117,"line":191},[547,552,556,561,566,570,575,580,584,589],{"type":31,"tag":115,"props":548,"children":549},{"style":462},[550],{"type":36,"value":551},"  src",{"type":31,"tag":115,"props":553,"children":554},{"style":149},[555],{"type":36,"value":470},{"type":31,"tag":115,"props":557,"children":558},{"style":462},[559],{"type":36,"value":560},"url",{"type":31,"tag":115,"props":562,"children":563},{"style":149},[564],{"type":36,"value":565},"(",{"type":31,"tag":115,"props":567,"children":568},{"style":200},[569],{"type":36,"value":257},{"type":31,"tag":115,"props":571,"children":572},{"style":149},[573],{"type":36,"value":574},") ",{"type":31,"tag":115,"props":576,"children":577},{"style":462},[578],{"type":36,"value":579},"format",{"type":31,"tag":115,"props":581,"children":582},{"style":149},[583],{"type":36,"value":565},{"type":31,"tag":115,"props":585,"children":586},{"style":200},[587],{"type":36,"value":588},"'woff2'",{"type":31,"tag":115,"props":590,"children":591},{"style":149},[592],{"type":36,"value":593},");\n",{"type":31,"tag":115,"props":595,"children":596},{"class":117,"line":25},[597],{"type":31,"tag":115,"props":598,"children":599},{"style":149},[600],{"type":36,"value":601},"}\n",{"type":31,"tag":115,"props":603,"children":604},{"class":117,"line":228},[605],{"type":31,"tag":115,"props":606,"children":608},{"emptyLinePlaceholder":607},true,[609],{"type":36,"value":610},"\n",{"type":31,"tag":115,"props":612,"children":613},{"class":117,"line":246},[614,618],{"type":31,"tag":115,"props":615,"children":616},{"style":132},[617],{"type":36,"value":425},{"type":31,"tag":115,"props":619,"children":620},{"style":149},[621],{"type":36,"value":456},{"type":31,"tag":115,"props":623,"children":624},{"class":117,"line":264},[625,629,633,637],{"type":31,"tag":115,"props":626,"children":627},{"style":462},[628],{"type":36,"value":465},{"type":31,"tag":115,"props":630,"children":631},{"style":149},[632],{"type":36,"value":470},{"type":31,"tag":115,"props":634,"children":635},{"style":200},[636],{"type":36,"value":475},{"type":31,"tag":115,"props":638,"children":639},{"style":149},[640],{"type":36,"value":480},{"type":31,"tag":115,"props":642,"children":643},{"class":117,"line":278},[644,648,652,656],{"type":31,"tag":115,"props":645,"children":646},{"style":462},[647],{"type":36,"value":488},{"type":31,"tag":115,"props":649,"children":650},{"style":149},[651],{"type":36,"value":470},{"type":31,"tag":115,"props":653,"children":654},{"style":462},[655],{"type":36,"value":497},{"type":31,"tag":115,"props":657,"children":658},{"style":149},[659],{"type":36,"value":480},{"type":31,"tag":115,"props":661,"children":662},{"class":117,"line":287},[663,667,671,676],{"type":31,"tag":115,"props":664,"children":665},{"style":462},[666],{"type":36,"value":509},{"type":31,"tag":115,"props":668,"children":669},{"style":149},[670],{"type":36,"value":470},{"type":31,"tag":115,"props":672,"children":673},{"style":462},[674],{"type":36,"value":675},"600",{"type":31,"tag":115,"props":677,"children":678},{"style":149},[679],{"type":36,"value":480},{"type":31,"tag":115,"props":681,"children":682},{"class":117,"line":295},[683,687,691,695],{"type":31,"tag":115,"props":684,"children":685},{"style":462},[686],{"type":36,"value":530},{"type":31,"tag":115,"props":688,"children":689},{"style":149},[690],{"type":36,"value":470},{"type":31,"tag":115,"props":692,"children":693},{"style":462},[694],{"type":36,"value":539},{"type":31,"tag":115,"props":696,"children":697},{"style":149},[698],{"type":36,"value":480},{"type":31,"tag":115,"props":700,"children":701},{"class":117,"line":311},[702,706,710,714,718,722,726,730,734,738],{"type":31,"tag":115,"props":703,"children":704},{"style":462},[705],{"type":36,"value":551},{"type":31,"tag":115,"props":707,"children":708},{"style":149},[709],{"type":36,"value":470},{"type":31,"tag":115,"props":711,"children":712},{"style":462},[713],{"type":36,"value":560},{"type":31,"tag":115,"props":715,"children":716},{"style":149},[717],{"type":36,"value":565},{"type":31,"tag":115,"props":719,"children":720},{"style":200},[721],{"type":36,"value":353},{"type":31,"tag":115,"props":723,"children":724},{"style":149},[725],{"type":36,"value":574},{"type":31,"tag":115,"props":727,"children":728},{"style":462},[729],{"type":36,"value":579},{"type":31,"tag":115,"props":731,"children":732},{"style":149},[733],{"type":36,"value":565},{"type":31,"tag":115,"props":735,"children":736},{"style":200},[737],{"type":36,"value":588},{"type":31,"tag":115,"props":739,"children":740},{"style":149},[741],{"type":36,"value":593},{"type":31,"tag":115,"props":743,"children":744},{"class":117,"line":327},[745],{"type":31,"tag":115,"props":746,"children":747},{"style":149},[748],{"type":36,"value":601},{"type":31,"tag":32,"props":750,"children":751},{},[752,754,760],{"type":36,"value":753},"Con ",{"type":31,"tag":39,"props":755,"children":757},{"className":756},[],[758],{"type":36,"value":759},"font-display: swap",{"type":36,"value":761},", aceptamos el compromiso de FOUT (Flash of Unstyled Text) — se muestra la fuente del sistema mientras la personalizada carga, y se intercambian una vez disponibles. LCP bajó a 6.4 segundos. El aumento en tamaño (72 KB en Woff2 comprimido) valió la pena por los 3.8 segundos ganados.",{"type":31,"tag":48,"props":763,"children":765},{"id":764},"hidratación-client-side-tbt-2190ms",[766],{"type":36,"value":767},"Hidratación Client-Side: TBT 2190ms",{"type":31,"tag":32,"props":769,"children":770},{},[771,773,779],{"type":36,"value":772},"Nuxt 3, por defecto, hidrata todos los componentes client-side. Dentro de ",{"type":31,"tag":39,"props":774,"children":776},{"className":775},[],[777],{"type":36,"value":778},"app.vue",{"type":36,"value":780}," había 40+ componentes, estado global (Pinia), composables y librerías terceras (Swiper, vue-gtag) bloqueando el hilo principal. En Performance de Chrome DevTools, \"Long Tasks\" sumaban 8, la más larga duraba 1240 milisegundos.",{"type":31,"tag":782,"props":783,"children":785},"h3",{"id":784},"hidratación-lazy-con-priorización",[786],{"type":36,"value":787},"Hidratación Lazy con Priorización",{"type":31,"tag":32,"props":789,"children":790},{},[791,793,799],{"type":36,"value":792},"Componentes fuera del viewport inicial fueron hidratados de manera lazy. Después de agregar ",{"type":31,"tag":39,"props":794,"children":796},{"className":795},[],[797],{"type":36,"value":798},"@nuxtjs\u002Fweb-vitals",{"type":36,"value":800}," y medir INP y TBT, identificamos la ruta crítica:",{"type":31,"tag":105,"props":802,"children":806},{"code":803,"language":804,"meta":15,"className":805,"style":15},"\u003C!-- pages\u002Findex.vue -->\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003C!-- Above-the-fold: hidratación inmediata -->\n    \u003CHeroSection \u002F>\n    \u003CProductGrid :products=\"products\" \u002F>\n\n    \u003C!-- Below-the-fold: hidratación lazy -->\n    \u003CLazyFooter v-if=\"mounted\" \u002F>\n    \u003CLazyNewsletterForm v-if=\"mounted\" \u002F>\n    \u003Cclient-only>\n      \u003CLazyReviewCarousel :reviews=\"reviews\" \u002F>\n    \u003C\u002Fclient-only>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\nconst mounted = ref(false)\n\nonMounted(() => {\n  requestIdleCallback(() => {\n    mounted.value = true\n  })\n})\n\u003C\u002Fscript>\n","vue","language-vue shiki shiki-themes github-dark",[807],{"type":31,"tag":39,"props":808,"children":809},{"__ignoreMap":15},[810,818,837,854,862,880,911,918,926,956,984,1000,1031,1047,1063,1079,1086,1121,1158,1165,1187,1207,1224,1232,1240],{"type":31,"tag":115,"props":811,"children":812},{"class":117,"line":118},[813],{"type":31,"tag":115,"props":814,"children":815},{"style":122},[816],{"type":36,"value":817},"\u003C!-- pages\u002Findex.vue -->\n",{"type":31,"tag":115,"props":819,"children":820},{"class":117,"line":128},[821,826,832],{"type":31,"tag":115,"props":822,"children":823},{"style":149},[824],{"type":36,"value":825},"\u003C",{"type":31,"tag":115,"props":827,"children":829},{"style":828},"--shiki-default:#85E89D",[830],{"type":36,"value":831},"template",{"type":31,"tag":115,"props":833,"children":834},{"style":149},[835],{"type":36,"value":836},">\n",{"type":31,"tag":115,"props":838,"children":839},{"class":117,"line":155},[840,845,850],{"type":31,"tag":115,"props":841,"children":842},{"style":149},[843],{"type":36,"value":844},"  \u003C",{"type":31,"tag":115,"props":846,"children":847},{"style":828},[848],{"type":36,"value":849},"div",{"type":31,"tag":115,"props":851,"children":852},{"style":149},[853],{"type":36,"value":836},{"type":31,"tag":115,"props":855,"children":856},{"class":117,"line":164},[857],{"type":31,"tag":115,"props":858,"children":859},{"style":122},[860],{"type":36,"value":861},"    \u003C!-- Above-the-fold: hidratación inmediata -->\n",{"type":31,"tag":115,"props":863,"children":864},{"class":117,"line":173},[865,870,875],{"type":31,"tag":115,"props":866,"children":867},{"style":149},[868],{"type":36,"value":869},"    \u003C",{"type":31,"tag":115,"props":871,"children":872},{"style":828},[873],{"type":36,"value":874},"HeroSection",{"type":31,"tag":115,"props":876,"children":877},{"style":149},[878],{"type":36,"value":879}," \u002F>\n",{"type":31,"tag":115,"props":881,"children":882},{"class":117,"line":182},[883,887,892,897,902,907],{"type":31,"tag":115,"props":884,"children":885},{"style":149},[886],{"type":36,"value":869},{"type":31,"tag":115,"props":888,"children":889},{"style":828},[890],{"type":36,"value":891},"ProductGrid",{"type":31,"tag":115,"props":893,"children":894},{"style":143},[895],{"type":36,"value":896}," :products",{"type":31,"tag":115,"props":898,"children":899},{"style":149},[900],{"type":36,"value":901},"=",{"type":31,"tag":115,"props":903,"children":904},{"style":200},[905],{"type":36,"value":906},"\"products\"",{"type":31,"tag":115,"props":908,"children":909},{"style":149},[910],{"type":36,"value":879},{"type":31,"tag":115,"props":912,"children":913},{"class":117,"line":191},[914],{"type":31,"tag":115,"props":915,"children":916},{"emptyLinePlaceholder":607},[917],{"type":36,"value":610},{"type":31,"tag":115,"props":919,"children":920},{"class":117,"line":25},[921],{"type":31,"tag":115,"props":922,"children":923},{"style":122},[924],{"type":36,"value":925},"    \u003C!-- Below-the-fold: hidratación lazy -->\n",{"type":31,"tag":115,"props":927,"children":928},{"class":117,"line":228},[929,933,938,943,947,952],{"type":31,"tag":115,"props":930,"children":931},{"style":149},[932],{"type":36,"value":869},{"type":31,"tag":115,"props":934,"children":935},{"style":828},[936],{"type":36,"value":937},"LazyFooter",{"type":31,"tag":115,"props":939,"children":940},{"style":143},[941],{"type":36,"value":942}," v-if",{"type":31,"tag":115,"props":944,"children":945},{"style":149},[946],{"type":36,"value":901},{"type":31,"tag":115,"props":948,"children":949},{"style":200},[950],{"type":36,"value":951},"\"mounted\"",{"type":31,"tag":115,"props":953,"children":954},{"style":149},[955],{"type":36,"value":879},{"type":31,"tag":115,"props":957,"children":958},{"class":117,"line":246},[959,963,968,972,976,980],{"type":31,"tag":115,"props":960,"children":961},{"style":149},[962],{"type":36,"value":869},{"type":31,"tag":115,"props":964,"children":965},{"style":828},[966],{"type":36,"value":967},"LazyNewsletterForm",{"type":31,"tag":115,"props":969,"children":970},{"style":143},[971],{"type":36,"value":942},{"type":31,"tag":115,"props":973,"children":974},{"style":149},[975],{"type":36,"value":901},{"type":31,"tag":115,"props":977,"children":978},{"style":200},[979],{"type":36,"value":951},{"type":31,"tag":115,"props":981,"children":982},{"style":149},[983],{"type":36,"value":879},{"type":31,"tag":115,"props":985,"children":986},{"class":117,"line":264},[987,991,996],{"type":31,"tag":115,"props":988,"children":989},{"style":149},[990],{"type":36,"value":869},{"type":31,"tag":115,"props":992,"children":993},{"style":828},[994],{"type":36,"value":995},"client-only",{"type":31,"tag":115,"props":997,"children":998},{"style":149},[999],{"type":36,"value":836},{"type":31,"tag":115,"props":1001,"children":1002},{"class":117,"line":278},[1003,1008,1013,1018,1022,1027],{"type":31,"tag":115,"props":1004,"children":1005},{"style":149},[1006],{"type":36,"value":1007},"      \u003C",{"type":31,"tag":115,"props":1009,"children":1010},{"style":828},[1011],{"type":36,"value":1012},"LazyReviewCarousel",{"type":31,"tag":115,"props":1014,"children":1015},{"style":143},[1016],{"type":36,"value":1017}," :reviews",{"type":31,"tag":115,"props":1019,"children":1020},{"style":149},[1021],{"type":36,"value":901},{"type":31,"tag":115,"props":1023,"children":1024},{"style":200},[1025],{"type":36,"value":1026},"\"reviews\"",{"type":31,"tag":115,"props":1028,"children":1029},{"style":149},[1030],{"type":36,"value":879},{"type":31,"tag":115,"props":1032,"children":1033},{"class":117,"line":287},[1034,1039,1043],{"type":31,"tag":115,"props":1035,"children":1036},{"style":149},[1037],{"type":36,"value":1038},"    \u003C\u002F",{"type":31,"tag":115,"props":1040,"children":1041},{"style":828},[1042],{"type":36,"value":995},{"type":31,"tag":115,"props":1044,"children":1045},{"style":149},[1046],{"type":36,"value":836},{"type":31,"tag":115,"props":1048,"children":1049},{"class":117,"line":295},[1050,1055,1059],{"type":31,"tag":115,"props":1051,"children":1052},{"style":149},[1053],{"type":36,"value":1054},"  \u003C\u002F",{"type":31,"tag":115,"props":1056,"children":1057},{"style":828},[1058],{"type":36,"value":849},{"type":31,"tag":115,"props":1060,"children":1061},{"style":149},[1062],{"type":36,"value":836},{"type":31,"tag":115,"props":1064,"children":1065},{"class":117,"line":311},[1066,1071,1075],{"type":31,"tag":115,"props":1067,"children":1068},{"style":149},[1069],{"type":36,"value":1070},"\u003C\u002F",{"type":31,"tag":115,"props":1072,"children":1073},{"style":828},[1074],{"type":36,"value":831},{"type":31,"tag":115,"props":1076,"children":1077},{"style":149},[1078],{"type":36,"value":836},{"type":31,"tag":115,"props":1080,"children":1081},{"class":117,"line":327},[1082],{"type":31,"tag":115,"props":1083,"children":1084},{"emptyLinePlaceholder":607},[1085],{"type":36,"value":610},{"type":31,"tag":115,"props":1087,"children":1088},{"class":117,"line":343},[1089,1093,1098,1103,1108,1112,1117],{"type":31,"tag":115,"props":1090,"children":1091},{"style":149},[1092],{"type":36,"value":825},{"type":31,"tag":115,"props":1094,"children":1095},{"style":828},[1096],{"type":36,"value":1097},"script",{"type":31,"tag":115,"props":1099,"children":1100},{"style":143},[1101],{"type":36,"value":1102}," setup",{"type":31,"tag":115,"props":1104,"children":1105},{"style":143},[1106],{"type":36,"value":1107}," lang",{"type":31,"tag":115,"props":1109,"children":1110},{"style":149},[1111],{"type":36,"value":901},{"type":31,"tag":115,"props":1113,"children":1114},{"style":200},[1115],{"type":36,"value":1116},"\"ts\"",{"type":31,"tag":115,"props":1118,"children":1119},{"style":149},[1120],{"type":36,"value":836},{"type":31,"tag":115,"props":1122,"children":1123},{"class":117,"line":360},[1124,1129,1134,1139,1144,1148,1153],{"type":31,"tag":115,"props":1125,"children":1126},{"style":132},[1127],{"type":36,"value":1128},"const",{"type":31,"tag":115,"props":1130,"children":1131},{"style":462},[1132],{"type":36,"value":1133}," mounted",{"type":31,"tag":115,"props":1135,"children":1136},{"style":132},[1137],{"type":36,"value":1138}," =",{"type":31,"tag":115,"props":1140,"children":1141},{"style":143},[1142],{"type":36,"value":1143}," ref",{"type":31,"tag":115,"props":1145,"children":1146},{"style":149},[1147],{"type":36,"value":565},{"type":31,"tag":115,"props":1149,"children":1150},{"style":462},[1151],{"type":36,"value":1152},"false",{"type":31,"tag":115,"props":1154,"children":1155},{"style":149},[1156],{"type":36,"value":1157},")\n",{"type":31,"tag":115,"props":1159,"children":1160},{"class":117,"line":372},[1161],{"type":31,"tag":115,"props":1162,"children":1163},{"emptyLinePlaceholder":607},[1164],{"type":36,"value":610},{"type":31,"tag":115,"props":1166,"children":1167},{"class":117,"line":381},[1168,1173,1178,1183],{"type":31,"tag":115,"props":1169,"children":1170},{"style":143},[1171],{"type":36,"value":1172},"onMounted",{"type":31,"tag":115,"props":1174,"children":1175},{"style":149},[1176],{"type":36,"value":1177},"(() ",{"type":31,"tag":115,"props":1179,"children":1180},{"style":132},[1181],{"type":36,"value":1182},"=>",{"type":31,"tag":115,"props":1184,"children":1185},{"style":149},[1186],{"type":36,"value":456},{"type":31,"tag":115,"props":1188,"children":1189},{"class":117,"line":390},[1190,1195,1199,1203],{"type":31,"tag":115,"props":1191,"children":1192},{"style":143},[1193],{"type":36,"value":1194},"  requestIdleCallback",{"type":31,"tag":115,"props":1196,"children":1197},{"style":149},[1198],{"type":36,"value":1177},{"type":31,"tag":115,"props":1200,"children":1201},{"style":132},[1202],{"type":36,"value":1182},{"type":31,"tag":115,"props":1204,"children":1205},{"style":149},[1206],{"type":36,"value":456},{"type":31,"tag":115,"props":1208,"children":1209},{"class":117,"line":399},[1210,1215,1219],{"type":31,"tag":115,"props":1211,"children":1212},{"style":149},[1213],{"type":36,"value":1214},"    mounted.value ",{"type":31,"tag":115,"props":1216,"children":1217},{"style":132},[1218],{"type":36,"value":901},{"type":31,"tag":115,"props":1220,"children":1221},{"style":462},[1222],{"type":36,"value":1223}," true\n",{"type":31,"tag":115,"props":1225,"children":1226},{"class":117,"line":408},[1227],{"type":31,"tag":115,"props":1228,"children":1229},{"style":149},[1230],{"type":36,"value":1231},"  })\n",{"type":31,"tag":115,"props":1233,"children":1235},{"class":117,"line":1234},24,[1236],{"type":31,"tag":115,"props":1237,"children":1238},{"style":149},[1239],{"type":36,"value":414},{"type":31,"tag":115,"props":1241,"children":1243},{"class":117,"line":1242},25,[1244,1248,1252],{"type":31,"tag":115,"props":1245,"children":1246},{"style":149},[1247],{"type":36,"value":1070},{"type":31,"tag":115,"props":1249,"children":1250},{"style":828},[1251],{"type":36,"value":1097},{"type":31,"tag":115,"props":1253,"children":1254},{"style":149},[1255],{"type":36,"value":836},{"type":31,"tag":32,"props":1257,"children":1258},{},[1259,1260,1266,1268,1274],{"type":36,"value":753},{"type":31,"tag":39,"props":1261,"children":1263},{"className":1262},[],[1264],{"type":36,"value":1265},"\u003Cclient-only>",{"type":36,"value":1267},", eliminamos librerías dependientes del DOM (como Swiper) del SSR. ",{"type":31,"tag":39,"props":1269,"children":1271},{"className":1270},[],[1272],{"type":36,"value":1273},"requestIdleCallback",{"type":36,"value":1275}," retrasa la hidratación hasta que el hilo principal está inactivo. TBT se redujo a 840 milisegundos en este paso.",{"type":31,"tag":782,"props":1277,"children":1279},{"id":1278},"code-splitting-y-bundle-splitting",[1280],{"type":36,"value":1281},"Code Splitting y Bundle Splitting",{"type":31,"tag":32,"props":1283,"children":1284},{},[1285,1287,1293],{"type":36,"value":1286},"Analizamos el bundle con ",{"type":31,"tag":39,"props":1288,"children":1290},{"className":1289},[],[1291],{"type":36,"value":1292},"vite-plugin-inspect",{"type":36,"value":1294},". Swiper ocupaba 168 KB minificados, pero solo se usaba en un carrusel de reseñas. En lugar de dividir dinámicamente, optimizamos el uso — eliminamos módulos innecesarios (Virtual, Autoplay), dejando solo Navigation:",{"type":31,"tag":105,"props":1296,"children":1298},{"code":1297,"language":108,"meta":15,"className":109,"style":15},"\u002F\u002F composables\u002FuseSwiper.ts\nimport { Navigation } from 'swiper\u002Fmodules'\nimport 'swiper\u002Fcss'\nimport 'swiper\u002Fcss\u002Fnavigation'\n\nexport const useSwiperModules = () => [Navigation]\n",[1299],{"type":31,"tag":39,"props":1300,"children":1301},{"__ignoreMap":15},[1302,1310,1333,1345,1357,1364],{"type":31,"tag":115,"props":1303,"children":1304},{"class":117,"line":118},[1305],{"type":31,"tag":115,"props":1306,"children":1307},{"style":122},[1308],{"type":36,"value":1309},"\u002F\u002F composables\u002FuseSwiper.ts\n",{"type":31,"tag":115,"props":1311,"children":1312},{"class":117,"line":128},[1313,1318,1323,1328],{"type":31,"tag":115,"props":1314,"children":1315},{"style":132},[1316],{"type":36,"value":1317},"import",{"type":31,"tag":115,"props":1319,"children":1320},{"style":149},[1321],{"type":36,"value":1322}," { Navigation } ",{"type":31,"tag":115,"props":1324,"children":1325},{"style":132},[1326],{"type":36,"value":1327},"from",{"type":31,"tag":115,"props":1329,"children":1330},{"style":200},[1331],{"type":36,"value":1332}," 'swiper\u002Fmodules'\n",{"type":31,"tag":115,"props":1334,"children":1335},{"class":117,"line":155},[1336,1340],{"type":31,"tag":115,"props":1337,"children":1338},{"style":132},[1339],{"type":36,"value":1317},{"type":31,"tag":115,"props":1341,"children":1342},{"style":200},[1343],{"type":36,"value":1344}," 'swiper\u002Fcss'\n",{"type":31,"tag":115,"props":1346,"children":1347},{"class":117,"line":164},[1348,1352],{"type":31,"tag":115,"props":1349,"children":1350},{"style":132},[1351],{"type":36,"value":1317},{"type":31,"tag":115,"props":1353,"children":1354},{"style":200},[1355],{"type":36,"value":1356}," 'swiper\u002Fcss\u002Fnavigation'\n",{"type":31,"tag":115,"props":1358,"children":1359},{"class":117,"line":173},[1360],{"type":31,"tag":115,"props":1361,"children":1362},{"emptyLinePlaceholder":607},[1363],{"type":36,"value":610},{"type":31,"tag":115,"props":1365,"children":1366},{"class":117,"line":182},[1367,1371,1376,1381,1385,1390,1394],{"type":31,"tag":115,"props":1368,"children":1369},{"style":132},[1370],{"type":36,"value":135},{"type":31,"tag":115,"props":1372,"children":1373},{"style":132},[1374],{"type":36,"value":1375}," const",{"type":31,"tag":115,"props":1377,"children":1378},{"style":143},[1379],{"type":36,"value":1380}," useSwiperModules",{"type":31,"tag":115,"props":1382,"children":1383},{"style":132},[1384],{"type":36,"value":1138},{"type":31,"tag":115,"props":1386,"children":1387},{"style":149},[1388],{"type":36,"value":1389}," () ",{"type":31,"tag":115,"props":1391,"children":1392},{"style":132},[1393],{"type":36,"value":1182},{"type":31,"tag":115,"props":1395,"children":1396},{"style":149},[1397],{"type":36,"value":1398}," [Navigation]\n",{"type":31,"tag":32,"props":1400,"children":1401},{},[1402,1404,1410],{"type":36,"value":1403},"El bundle bajó de 168 KB a 42 KB. Como ",{"type":31,"tag":39,"props":1405,"children":1407},{"className":1406},[],[1408],{"type":36,"value":1409},"\u003CLazyReviewCarousel>",{"type":36,"value":1411}," ya era lazy, el tamaño del bundle inicial no se vio afectado.",{"type":31,"tag":48,"props":1413,"children":1415},{"id":1414},"content-visibility-reducción-del-período-de-renderizado",[1416],{"type":36,"value":1417},"Content-Visibility: Reducción del Período de Renderizado",{"type":31,"tag":32,"props":1419,"children":1420},{},[1421,1423,1429],{"type":36,"value":1422},"El grid de productos mostraba 48 tarjetas (imagen + título + precio + botón). El navegador calculaba el layout de todas simultáneamente, alargando el LCP. Con CSS ",{"type":31,"tag":39,"props":1424,"children":1426},{"className":1425},[],[1427],{"type":36,"value":1428},"content-visibility: auto",{"type":36,"value":1430},", eliminamos del renderizado inicial las tarjetas fuera del viewport:",{"type":31,"tag":105,"props":1432,"children":1434},{"code":1433,"language":431,"meta":15,"className":432,"style":15},"\u002F* components\u002FProductCard.vue *\u002F\n.product-card {\n  content-visibility: auto;\n  contain-intrinsic-size: 320px 420px;\n}\n",[1435],{"type":31,"tag":39,"props":1436,"children":1437},{"__ignoreMap":15},[1438,1446,1458,1479,1514],{"type":31,"tag":115,"props":1439,"children":1440},{"class":117,"line":118},[1441],{"type":31,"tag":115,"props":1442,"children":1443},{"style":122},[1444],{"type":36,"value":1445},"\u002F* components\u002FProductCard.vue *\u002F\n",{"type":31,"tag":115,"props":1447,"children":1448},{"class":117,"line":128},[1449,1454],{"type":31,"tag":115,"props":1450,"children":1451},{"style":143},[1452],{"type":36,"value":1453},".product-card",{"type":31,"tag":115,"props":1455,"children":1456},{"style":149},[1457],{"type":36,"value":456},{"type":31,"tag":115,"props":1459,"children":1460},{"class":117,"line":155},[1461,1466,1470,1475],{"type":31,"tag":115,"props":1462,"children":1463},{"style":462},[1464],{"type":36,"value":1465},"  content-visibility",{"type":31,"tag":115,"props":1467,"children":1468},{"style":149},[1469],{"type":36,"value":470},{"type":31,"tag":115,"props":1471,"children":1472},{"style":462},[1473],{"type":36,"value":1474},"auto",{"type":31,"tag":115,"props":1476,"children":1477},{"style":149},[1478],{"type":36,"value":480},{"type":31,"tag":115,"props":1480,"children":1481},{"class":117,"line":164},[1482,1487,1491,1496,1501,1506,1510],{"type":31,"tag":115,"props":1483,"children":1484},{"style":462},[1485],{"type":36,"value":1486},"  contain-intrinsic-size",{"type":31,"tag":115,"props":1488,"children":1489},{"style":149},[1490],{"type":36,"value":470},{"type":31,"tag":115,"props":1492,"children":1493},{"style":462},[1494],{"type":36,"value":1495},"320",{"type":31,"tag":115,"props":1497,"children":1498},{"style":132},[1499],{"type":36,"value":1500},"px",{"type":31,"tag":115,"props":1502,"children":1503},{"style":462},[1504],{"type":36,"value":1505}," 420",{"type":31,"tag":115,"props":1507,"children":1508},{"style":132},[1509],{"type":36,"value":1500},{"type":31,"tag":115,"props":1511,"children":1512},{"style":149},[1513],{"type":36,"value":480},{"type":31,"tag":115,"props":1515,"children":1516},{"class":117,"line":173},[1517],{"type":31,"tag":115,"props":1518,"children":1519},{"style":149},[1520],{"type":36,"value":601},{"type":31,"tag":32,"props":1522,"children":1523},{},[1524,1530],{"type":31,"tag":39,"props":1525,"children":1527},{"className":1526},[],[1528],{"type":36,"value":1529},"contain-intrinsic-size",{"type":36,"value":1531}," le dice al navegador el tamaño del placeholder, evitando saltos de layout. LCP bajó de 6.4 a 3.9 segundos. El compromiso: las tarjetas fuera del viewport se renderizan al desplazarse, pero el impacto en INP es de 12 milisegundos (aceptable).",{"type":31,"tag":48,"props":1533,"children":1535},{"id":1534},"caché-edge-ttfb-12s-40ms",[1536],{"type":36,"value":1537},"Caché Edge: TTFB 1.2s → 40ms",{"type":31,"tag":32,"props":1539,"children":1540},{},[1541,1543,1549],{"type":36,"value":1542},"Cloudflare Pages no cachea HTML por defecto — cada solicitud va al origen. SSR de Nuxt 3 tarda ~1200 milisegundos (llamadas a API + renderizado). Activamos caché edge con un archivo ",{"type":31,"tag":39,"props":1544,"children":1546},{"className":1545},[],[1547],{"type":36,"value":1548},"_headers",{"type":36,"value":103},{"type":31,"tag":105,"props":1551,"children":1553},{"code":1552},"# public\u002F_headers\n\u002F*\n  Cache-Control: public, max-age=0, s-maxage=600, stale-while-revalidate=86400\n  X-Frame-Options: DENY\n  X-Content-Type-Options: nosniff\n",[1554],{"type":31,"tag":39,"props":1555,"children":1556},{"__ignoreMap":15},[1557],{"type":36,"value":1552},{"type":31,"tag":32,"props":1559,"children":1560},{},[1561,1562,1568,1570,1576],{"type":36,"value":753},{"type":31,"tag":39,"props":1563,"children":1565},{"className":1564},[],[1566],{"type":36,"value":1567},"s-maxage=600",{"type":36,"value":1569},", Cloudflare cachea en su edge durante 10 minutos. ",{"type":31,"tag":39,"props":1571,"children":1573},{"className":1572},[],[1574],{"type":36,"value":1575},"stale-while-revalidate=86400",{"type":36,"value":1577}," sirve la versión antigua mientras se regenera en background. TTFB bajó a 40 milisegundos (en edge hits). Las solicitudes al origen solo ocurren en cache misses o revalidación stale.",{"type":31,"tag":782,"props":1579,"children":1581},{"id":1580},"isr-con-renderizado-híbrido",[1582],{"type":36,"value":1583},"ISR con Renderizado Híbrido",{"type":31,"tag":32,"props":1585,"children":1586},{},[1587,1589,1595],{"type":36,"value":1588},"Para páginas de productos, usamos Incremental Static Regeneration. En Nuxt, se configura con ",{"type":31,"tag":39,"props":1590,"children":1592},{"className":1591},[],[1593],{"type":36,"value":1594},"routeRules",{"type":36,"value":103},{"type":31,"tag":105,"props":1597,"children":1599},{"code":1598,"language":108,"meta":15,"className":109,"style":15},"\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  routeRules: {\n    '\u002Fproducts\u002F**': { \n      swr: 600,  \u002F\u002F 10 minutos\n      prerender: false\n    },\n    '\u002F': { \n      swr: 300   \u002F\u002F 5 minutos\n    }\n  }\n})\n",[1600],{"type":31,"tag":39,"props":1601,"children":1602},{"__ignoreMap":15},[1603,1610,1629,1637,1650,1672,1685,1693,1705,1722,1729,1736],{"type":31,"tag":115,"props":1604,"children":1605},{"class":117,"line":118},[1606],{"type":31,"tag":115,"props":1607,"children":1608},{"style":122},[1609],{"type":36,"value":125},{"type":31,"tag":115,"props":1611,"children":1612},{"class":117,"line":128},[1613,1617,1621,1625],{"type":31,"tag":115,"props":1614,"children":1615},{"style":132},[1616],{"type":36,"value":135},{"type":31,"tag":115,"props":1618,"children":1619},{"style":132},[1620],{"type":36,"value":140},{"type":31,"tag":115,"props":1622,"children":1623},{"style":143},[1624],{"type":36,"value":146},{"type":31,"tag":115,"props":1626,"children":1627},{"style":149},[1628],{"type":36,"value":152},{"type":31,"tag":115,"props":1630,"children":1631},{"class":117,"line":155},[1632],{"type":31,"tag":115,"props":1633,"children":1634},{"style":149},[1635],{"type":36,"value":1636},"  routeRules: {\n",{"type":31,"tag":115,"props":1638,"children":1639},{"class":117,"line":164},[1640,1645],{"type":31,"tag":115,"props":1641,"children":1642},{"style":200},[1643],{"type":36,"value":1644},"    '\u002Fproducts\u002F**'",{"type":31,"tag":115,"props":1646,"children":1647},{"style":149},[1648],{"type":36,"value":1649},": { \n",{"type":31,"tag":115,"props":1651,"children":1652},{"class":117,"line":173},[1653,1658,1662,1667],{"type":31,"tag":115,"props":1654,"children":1655},{"style":149},[1656],{"type":36,"value":1657},"      swr: ",{"type":31,"tag":115,"props":1659,"children":1660},{"style":462},[1661],{"type":36,"value":675},{"type":31,"tag":115,"props":1663,"children":1664},{"style":149},[1665],{"type":36,"value":1666},",  ",{"type":31,"tag":115,"props":1668,"children":1669},{"style":122},[1670],{"type":36,"value":1671},"\u002F\u002F 10 minutos\n",{"type":31,"tag":115,"props":1673,"children":1674},{"class":117,"line":182},[1675,1680],{"type":31,"tag":115,"props":1676,"children":1677},{"style":149},[1678],{"type":36,"value":1679},"      prerender: ",{"type":31,"tag":115,"props":1681,"children":1682},{"style":462},[1683],{"type":36,"value":1684},"false\n",{"type":31,"tag":115,"props":1686,"children":1687},{"class":117,"line":191},[1688],{"type":31,"tag":115,"props":1689,"children":1690},{"style":149},[1691],{"type":36,"value":1692},"    },\n",{"type":31,"tag":115,"props":1694,"children":1695},{"class":117,"line":25},[1696,1701],{"type":31,"tag":115,"props":1697,"children":1698},{"style":200},[1699],{"type":36,"value":1700},"    '\u002F'",{"type":31,"tag":115,"props":1702,"children":1703},{"style":149},[1704],{"type":36,"value":1649},{"type":31,"tag":115,"props":1706,"children":1707},{"class":117,"line":228},[1708,1712,1717],{"type":31,"tag":115,"props":1709,"children":1710},{"style":149},[1711],{"type":36,"value":1657},{"type":31,"tag":115,"props":1713,"children":1714},{"style":462},[1715],{"type":36,"value":1716},"300",{"type":31,"tag":115,"props":1718,"children":1719},{"style":122},[1720],{"type":36,"value":1721},"   \u002F\u002F 5 minutos\n",{"type":31,"tag":115,"props":1723,"children":1724},{"class":117,"line":246},[1725],{"type":31,"tag":115,"props":1726,"children":1727},{"style":149},[1728],{"type":36,"value":396},{"type":31,"tag":115,"props":1730,"children":1731},{"class":117,"line":264},[1732],{"type":31,"tag":115,"props":1733,"children":1734},{"style":149},[1735],{"type":36,"value":405},{"type":31,"tag":115,"props":1737,"children":1738},{"class":117,"line":278},[1739],{"type":31,"tag":115,"props":1740,"children":1741},{"style":149},[1742],{"type":36,"value":414},{"type":31,"tag":32,"props":1744,"children":1745},{},[1746],{"type":36,"value":1747},"La primera solicitud usa SSR, las siguientes se cachean. Para actualizaciones de inventario, usamos un webhook de purga manual:",{"type":31,"tag":105,"props":1749,"children":1751},{"code":1750,"language":108,"meta":15,"className":109,"style":15},"\u002F\u002F server\u002Fapi\u002Fpurge-cache.post.ts\nexport default defineEventHandler(async (event) => {\n  const { productId } = await readBody(event)\n  \n  await fetch(`https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Fzones\u002F${process.env.CF_ZONE_ID}\u002Fpurge_cache`, {\n    method: 'POST',\n    headers: {\n      'Authorization': `Bearer ${process.env.CF_API_TOKEN}`,\n      'Content-Type': 'application\u002Fjson'\n    },\n    body: JSON.stringify({\n      files: [`https:\u002F\u002Fexample.com\u002Fproducts\u002F${productId}`]\n    })\n  })\n  \n  return { success: true }\n})\n",[1752],{"type":31,"tag":39,"props":1753,"children":1754},{"__ignoreMap":15},[1755,1763,1811,1853,1861,1917,1934,1942,1989,2006,2013,2039,2065,2073,2080,2087,2110],{"type":31,"tag":115,"props":1756,"children":1757},{"class":117,"line":118},[1758],{"type":31,"tag":115,"props":1759,"children":1760},{"style":122},[1761],{"type":36,"value":1762},"\u002F\u002F server\u002Fapi\u002Fpurge-cache.post.ts\n",{"type":31,"tag":115,"props":1764,"children":1765},{"class":117,"line":128},[1766,1770,1774,1779,1783,1788,1793,1799,1803,1807],{"type":31,"tag":115,"props":1767,"children":1768},{"style":132},[1769],{"type":36,"value":135},{"type":31,"tag":115,"props":1771,"children":1772},{"style":132},[1773],{"type":36,"value":140},{"type":31,"tag":115,"props":1775,"children":1776},{"style":143},[1777],{"type":36,"value":1778}," defineEventHandler",{"type":31,"tag":115,"props":1780,"children":1781},{"style":149},[1782],{"type":36,"value":565},{"type":31,"tag":115,"props":1784,"children":1785},{"style":132},[1786],{"type":36,"value":1787},"async",{"type":31,"tag":115,"props":1789,"children":1790},{"style":149},[1791],{"type":36,"value":1792}," (",{"type":31,"tag":115,"props":1794,"children":1796},{"style":1795},"--shiki-default:#FFAB70",[1797],{"type":36,"value":1798},"event",{"type":31,"tag":115,"props":1800,"children":1801},{"style":149},[1802],{"type":36,"value":574},{"type":31,"tag":115,"props":1804,"children":1805},{"style":132},[1806],{"type":36,"value":1182},{"type":31,"tag":115,"props":1808,"children":1809},{"style":149},[1810],{"type":36,"value":456},{"type":31,"tag":115,"props":1812,"children":1813},{"class":117,"line":155},[1814,1819,1824,1829,1834,1838,1843,1848],{"type":31,"tag":115,"props":1815,"children":1816},{"style":132},[1817],{"type":36,"value":1818},"  const",{"type":31,"tag":115,"props":1820,"children":1821},{"style":149},[1822],{"type":36,"value":1823}," { ",{"type":31,"tag":115,"props":1825,"children":1826},{"style":462},[1827],{"type":36,"value":1828},"productId",{"type":31,"tag":115,"props":1830,"children":1831},{"style":149},[1832],{"type":36,"value":1833}," } ",{"type":31,"tag":115,"props":1835,"children":1836},{"style":132},[1837],{"type":36,"value":901},{"type":31,"tag":115,"props":1839,"children":1840},{"style":132},[1841],{"type":36,"value":1842}," await",{"type":31,"tag":115,"props":1844,"children":1845},{"style":143},[1846],{"type":36,"value":1847}," readBody",{"type":31,"tag":115,"props":1849,"children":1850},{"style":149},[1851],{"type":36,"value":1852},"(event)\n",{"type":31,"tag":115,"props":1854,"children":1855},{"class":117,"line":164},[1856],{"type":31,"tag":115,"props":1857,"children":1858},{"style":149},[1859],{"type":36,"value":1860},"  \n",{"type":31,"tag":115,"props":1862,"children":1863},{"class":117,"line":173},[1864,1869,1874,1878,1883,1888,1893,1898,1902,1907,1912],{"type":31,"tag":115,"props":1865,"children":1866},{"style":132},[1867],{"type":36,"value":1868},"  await",{"type":31,"tag":115,"props":1870,"children":1871},{"style":143},[1872],{"type":36,"value":1873}," fetch",{"type":31,"tag":115,"props":1875,"children":1876},{"style":149},[1877],{"type":36,"value":565},{"type":31,"tag":115,"props":1879,"children":1880},{"style":200},[1881],{"type":36,"value":1882},"`https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Fzones\u002F${",{"type":31,"tag":115,"props":1884,"children":1885},{"style":149},[1886],{"type":36,"value":1887},"process",{"type":31,"tag":115,"props":1889,"children":1890},{"style":200},[1891],{"type":36,"value":1892},".",{"type":31,"tag":115,"props":1894,"children":1895},{"style":149},[1896],{"type":36,"value":1897},"env",{"type":31,"tag":115,"props":1899,"children":1900},{"style":200},[1901],{"type":36,"value":1892},{"type":31,"tag":115,"props":1903,"children":1904},{"style":462},[1905],{"type":36,"value":1906},"CF_ZONE_ID",{"type":31,"tag":115,"props":1908,"children":1909},{"style":200},[1910],{"type":36,"value":1911},"}\u002Fpurge_cache`",{"type":31,"tag":115,"props":1913,"children":1914},{"style":149},[1915],{"type":36,"value":1916},", {\n",{"type":31,"tag":115,"props":1918,"children":1919},{"class":117,"line":182},[1920,1925,1930],{"type":31,"tag":115,"props":1921,"children":1922},{"style":149},[1923],{"type":36,"value":1924},"    method: ",{"type":31,"tag":115,"props":1926,"children":1927},{"style":200},[1928],{"type":36,"value":1929},"'POST'",{"type":31,"tag":115,"props":1931,"children":1932},{"style":149},[1933],{"type":36,"value":208},{"type":31,"tag":115,"props":1935,"children":1936},{"class":117,"line":191},[1937],{"type":31,"tag":115,"props":1938,"children":1939},{"style":149},[1940],{"type":36,"value":1941},"    headers: {\n",{"type":31,"tag":115,"props":1943,"children":1944},{"class":117,"line":25},[1945,1950,1954,1959,1963,1967,1971,1975,1980,1985],{"type":31,"tag":115,"props":1946,"children":1947},{"style":200},[1948],{"type":36,"value":1949},"      'Authorization'",{"type":31,"tag":115,"props":1951,"children":1952},{"style":149},[1953],{"type":36,"value":470},{"type":31,"tag":115,"props":1955,"children":1956},{"style":200},[1957],{"type":36,"value":1958},"`Bearer ${",{"type":31,"tag":115,"props":1960,"children":1961},{"style":149},[1962],{"type":36,"value":1887},{"type":31,"tag":115,"props":1964,"children":1965},{"style":200},[1966],{"type":36,"value":1892},{"type":31,"tag":115,"props":1968,"children":1969},{"style":149},[1970],{"type":36,"value":1897},{"type":31,"tag":115,"props":1972,"children":1973},{"style":200},[1974],{"type":36,"value":1892},{"type":31,"tag":115,"props":1976,"children":1977},{"style":462},[1978],{"type":36,"value":1979},"CF_API_TOKEN",{"type":31,"tag":115,"props":1981,"children":1982},{"style":200},[1983],{"type":36,"value":1984},"}`",{"type":31,"tag":115,"props":1986,"children":1987},{"style":149},[1988],{"type":36,"value":208},{"type":31,"tag":115,"props":1990,"children":1991},{"class":117,"line":228},[1992,1997,2001],{"type":31,"tag":115,"props":1993,"children":1994},{"style":200},[1995],{"type":36,"value":1996},"      'Content-Type'",{"type":31,"tag":115,"props":1998,"children":1999},{"style":149},[2000],{"type":36,"value":470},{"type":31,"tag":115,"props":2002,"children":2003},{"style":200},[2004],{"type":36,"value":2005},"'application\u002Fjson'\n",{"type":31,"tag":115,"props":2007,"children":2008},{"class":117,"line":246},[2009],{"type":31,"tag":115,"props":2010,"children":2011},{"style":149},[2012],{"type":36,"value":1692},{"type":31,"tag":115,"props":2014,"children":2015},{"class":117,"line":264},[2016,2021,2026,2030,2035],{"type":31,"tag":115,"props":2017,"children":2018},{"style":149},[2019],{"type":36,"value":2020},"    body: ",{"type":31,"tag":115,"props":2022,"children":2023},{"style":462},[2024],{"type":36,"value":2025},"JSON",{"type":31,"tag":115,"props":2027,"children":2028},{"style":149},[2029],{"type":36,"value":1892},{"type":31,"tag":115,"props":2031,"children":2032},{"style":143},[2033],{"type":36,"value":2034},"stringify",{"type":31,"tag":115,"props":2036,"children":2037},{"style":149},[2038],{"type":36,"value":152},{"type":31,"tag":115,"props":2040,"children":2041},{"class":117,"line":278},[2042,2047,2052,2056,2060],{"type":31,"tag":115,"props":2043,"children":2044},{"style":149},[2045],{"type":36,"value":2046},"      files: [",{"type":31,"tag":115,"props":2048,"children":2049},{"style":200},[2050],{"type":36,"value":2051},"`https:\u002F\u002Fexample.com\u002Fproducts\u002F${",{"type":31,"tag":115,"props":2053,"children":2054},{"style":149},[2055],{"type":36,"value":1828},{"type":31,"tag":115,"props":2057,"children":2058},{"style":200},[2059],{"type":36,"value":1984},{"type":31,"tag":115,"props":2061,"children":2062},{"style":149},[2063],{"type":36,"value":2064},"]\n",{"type":31,"tag":115,"props":2066,"children":2067},{"class":117,"line":287},[2068],{"type":31,"tag":115,"props":2069,"children":2070},{"style":149},[2071],{"type":36,"value":2072},"    })\n",{"type":31,"tag":115,"props":2074,"children":2075},{"class":117,"line":295},[2076],{"type":31,"tag":115,"props":2077,"children":2078},{"style":149},[2079],{"type":36,"value":1231},{"type":31,"tag":115,"props":2081,"children":2082},{"class":117,"line":311},[2083],{"type":31,"tag":115,"props":2084,"children":2085},{"style":149},[2086],{"type":36,"value":1860},{"type":31,"tag":115,"props":2088,"children":2089},{"class":117,"line":327},[2090,2095,2100,2105],{"type":31,"tag":115,"props":2091,"children":2092},{"style":132},[2093],{"type":36,"value":2094},"  return",{"type":31,"tag":115,"props":2096,"children":2097},{"style":149},[2098],{"type":36,"value":2099}," { success: ",{"type":31,"tag":115,"props":2101,"children":2102},{"style":462},[2103],{"type":36,"value":2104},"true",{"type":31,"tag":115,"props":2106,"children":2107},{"style":149},[2108],{"type":36,"value":2109}," }\n",{"type":31,"tag":115,"props":2111,"children":2112},{"class":117,"line":343},[2113],{"type":31,"tag":115,"props":2114,"children":2115},{"style":149},[2116],{"type":36,"value":414},{"type":31,"tag":48,"props":2118,"children":2120},{"id":2119},"comparación-de-benchmarks",[2121],{"type":36,"value":2122},"Comparación de Benchmarks",{"type":31,"tag":2124,"props":2125,"children":2126},"table",{},[2127,2156],{"type":31,"tag":2128,"props":2129,"children":2130},"thead",{},[2131],{"type":31,"tag":2132,"props":2133,"children":2134},"tr",{},[2135,2141,2146,2151],{"type":31,"tag":2136,"props":2137,"children":2138},"th",{},[2139],{"type":36,"value":2140},"Métrica",{"type":31,"tag":2136,"props":2142,"children":2143},{},[2144],{"type":36,"value":2145},"Antes",{"type":31,"tag":2136,"props":2147,"children":2148},{},[2149],{"type":36,"value":2150},"Después",{"type":31,"tag":2136,"props":2152,"children":2153},{},[2154],{"type":36,"value":2155},"Cambio",{"type":31,"tag":2157,"props":2158,"children":2159},"tbody",{},[2160,2184,2207,2230,2253,2276],{"type":31,"tag":2132,"props":2161,"children":2162},{},[2163,2169,2174,2179],{"type":31,"tag":2164,"props":2165,"children":2166},"td",{},[2167],{"type":36,"value":2168},"LCP",{"type":31,"tag":2164,"props":2170,"children":2171},{},[2172],{"type":36,"value":2173},"10.2s",{"type":31,"tag":2164,"props":2175,"children":2176},{},[2177],{"type":36,"value":2178},"2.1s",{"type":31,"tag":2164,"props":2180,"children":2181},{},[2182],{"type":36,"value":2183},"-79%",{"type":31,"tag":2132,"props":2185,"children":2186},{},[2187,2192,2197,2202],{"type":31,"tag":2164,"props":2188,"children":2189},{},[2190],{"type":36,"value":2191},"TBT",{"type":31,"tag":2164,"props":2193,"children":2194},{},[2195],{"type":36,"value":2196},"2190ms",{"type":31,"tag":2164,"props":2198,"children":2199},{},[2200],{"type":36,"value":2201},"180ms",{"type":31,"tag":2164,"props":2203,"children":2204},{},[2205],{"type":36,"value":2206},"-92%",{"type":31,"tag":2132,"props":2208,"children":2209},{},[2210,2215,2220,2225],{"type":31,"tag":2164,"props":2211,"children":2212},{},[2213],{"type":36,"value":2214},"TTFB",{"type":31,"tag":2164,"props":2216,"children":2217},{},[2218],{"type":36,"value":2219},"1200ms",{"type":31,"tag":2164,"props":2221,"children":2222},{},[2223],{"type":36,"value":2224},"40ms",{"type":31,"tag":2164,"props":2226,"children":2227},{},[2228],{"type":36,"value":2229},"-97%",{"type":31,"tag":2132,"props":2231,"children":2232},{},[2233,2238,2243,2248],{"type":31,"tag":2164,"props":2234,"children":2235},{},[2236],{"type":36,"value":2237},"FCP",{"type":31,"tag":2164,"props":2239,"children":2240},{},[2241],{"type":36,"value":2242},"4.8s",{"type":31,"tag":2164,"props":2244,"children":2245},{},[2246],{"type":36,"value":2247},"1.2s",{"type":31,"tag":2164,"props":2249,"children":2250},{},[2251],{"type":36,"value":2252},"-75%",{"type":31,"tag":2132,"props":2254,"children":2255},{},[2256,2261,2266,2271],{"type":31,"tag":2164,"props":2257,"children":2258},{},[2259],{"type":36,"value":2260},"CLS",{"type":31,"tag":2164,"props":2262,"children":2263},{},[2264],{"type":36,"value":2265},"0.18",{"type":31,"tag":2164,"props":2267,"children":2268},{},[2269],{"type":36,"value":2270},"0.02",{"type":31,"tag":2164,"props":2272,"children":2273},{},[2274],{"type":36,"value":2275},"-89%",{"type":31,"tag":2132,"props":2277,"children":2278},{},[2279,2284,2289,2294],{"type":31,"tag":2164,"props":2280,"children":2281},{},[2282],{"type":36,"value":2283},"Bundle (inicial)",{"type":31,"tag":2164,"props":2285,"children":2286},{},[2287],{"type":36,"value":2288},"284 KB",{"type":31,"tag":2164,"props":2290,"children":2291},{},[2292],{"type":36,"value":2293},"186 KB",{"type":31,"tag":2164,"props":2295,"children":2296},{},[2297],{"type":36,"value":2298},"-34%",{"type":31,"tag":32,"props":2300,"children":2301},{},[2302],{"type":36,"value":2303},"Entorno: Chrome 121, throttling 4G, Lighthouse CI. Promedio de 10 ejecuciones. LCP está por debajo del umbral de \"Good\" de Google (2.5s) — objetivo alcanzado.",{"type":31,"tag":48,"props":2305,"children":2307},{"id":2306},"compromisos-y-consideraciones",[2308],{"type":36,"value":2309},"Compromisos y Consideraciones",{"type":31,"tag":32,"props":2311,"children":2312},{},[2313,2315,2321],{"type":36,"value":2314},"Las fuentes auto-alojadas pierden la red global de CDN de Google, pero Cloudflare Pages las sirve desde el edge. La compresión Woff2 minimiza latencia adicional. La hidratación lazy reduce la interactividad inicial — componentes below-the-fold se activan después del hook ",{"type":31,"tag":39,"props":2316,"children":2318},{"className":2317},[],[2319],{"type":36,"value":2320},"mounted",{"type":36,"value":2322},". Las métricas analíticas deben incluir \"time to interactive below fold\".",{"type":31,"tag":32,"props":2324,"children":2325},{},[2326,2331,2333,2339,2341,2347],{"type":31,"tag":39,"props":2327,"children":2329},{"className":2328},[],[2330],{"type":36,"value":44},{"type":36,"value":2332}," no es soportado en Safari anterior a 17.4 — usar guardias ",{"type":31,"tag":39,"props":2334,"children":2336},{"className":2335},[],[2337],{"type":36,"value":2338},"@supports",{"type":36,"value":2340},". El caché edge genera conflictos con personalización (carrito, login) — proteger con ",{"type":31,"tag":39,"props":2342,"children":2344},{"className":2343},[],[2345],{"type":36,"value":2346},"Cache-Control: private",{"type":36,"value":2348}," o renderizar client-side.",{"type":31,"tag":32,"props":2350,"children":2351},{},[2352],{"type":36,"value":2353},"La purga de caché con webhook es manual — debe integrarse con sistemas de gestión de inventario. Contenido stale es riesgoso en checkout o pagos — ISR desactivado en esas rutas.",{"type":31,"tag":48,"props":2355,"children":2357},{"id":2356},"escalabilidad-con-arquitectura-composable",[2358],{"type":36,"value":2359},"Escalabilidad con Arquitectura Composable",{"type":31,"tag":32,"props":2361,"children":2362},{},[2363,2365,2374,2376,2381],{"type":36,"value":2364},"Estas optimizaciones fueron probadas en ",{"type":31,"tag":2366,"props":2367,"children":2371},"a",{"href":2368,"rel":2369},"https:\u002F\u002Fwww.roibase.com.tr\u002Fes\u002Fheadless",[2370],"nofollow",[2372],{"type":36,"value":2373},"Headless Commerce",{"type":36,"value":2375}," — frontend Nuxt 3, backend Storefront API de Shopify. El patrón funciona en Next.js + Hydrogen o Remix. La estrategia de caché edge es agnóstica del framework, extensible con Cloudflare Workers KV o Vercel Edge Config. Monitoreo con ",{"type":31,"tag":39,"props":2377,"children":2379},{"className":2378},[],[2380],{"type":36,"value":798},{"type":36,"value":2382}," debe complementarse con RUM — Cloudflare Web Analytics o Sentry Performance.",{"type":31,"tag":32,"props":2384,"children":2385},{},[2386,2388,2394],{"type":36,"value":2387},"LCP de 2.1s es \"Good\" en desktop, pero requiere testing en 4G mobile. Progressive enhancement — JavaScript fallido — requiere HTML SSR funcional. Contenido crítico debe renderizarse sin JavaScript, usando el componente ",{"type":31,"tag":39,"props":2389,"children":2391},{"className":2390},[],[2392],{"type":36,"value":2393},"\u003CNoScript>",{"type":36,"value":2395}," de Nuxt.",{"type":31,"tag":2397,"props":2398,"children":2399},"style",{},[2400],{"type":36,"value":2401},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":15,"searchDepth":155,"depth":155,"links":2403},[2404,2405,2409,2410,2413,2414,2415],{"id":50,"depth":128,"text":53},{"id":764,"depth":128,"text":767,"children":2406},[2407,2408],{"id":784,"depth":155,"text":787},{"id":1278,"depth":155,"text":1281},{"id":1414,"depth":128,"text":1417},{"id":1534,"depth":128,"text":1537,"children":2411},[2412],{"id":1580,"depth":155,"text":1583},{"id":2119,"depth":128,"text":2122},{"id":2306,"depth":128,"text":2309},{"id":2356,"depth":128,"text":2359},"markdown","content:es:tech:nuxt-3-cloudflare-pages-lcp-optimizacion.md","content","es\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimizacion.md","es\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimizacion","md",1782079498611]