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