[{"data":1,"prerenderedAt":2437},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimizatsiya":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":10,"_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: LCP снижение с 10s на 2s","Self-hosted шрифты, ленивая гидратация, content-visibility и edge кеширование снизили LCP на 80%. Код и бенчмарки внутри.","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,426,747,760,766,779,786,799,1254,1275,1281,1317,1421,1434,1440,1453,1543,1554,1560,1573,1581,1600,1606,1618,1765,1770,2139,2145,2321,2326,2332,2337,2363,2368,2374,2390,2403,2411],{"type":30,"tag":31,"props":32,"children":33},"element","p",{},[34,37,44],{"type":35,"value":36},"text","Cloudflare Pages + Nuxt 3 обещают edge-кеширование и zero-config деплой, но для Core Web Vitals этого недостаточно. В боевом e-commerce проекте LCP был 10.2 секунды, TBT — 2190 мс. Google Fonts, client-side гидратация, глобальный CSS и синхронный JavaScript блокировали рендеринг. С помощью self-hosted шрифтов, ленивой гидратации, CSS свойства ",{"type":30,"tag":38,"props":39,"children":41},"code",{"className":40},[],[42],{"type":35,"value":43},"content-visibility",{"type":35,"value":45}," и edge-кеш стратегии мы снизили LCP до 2.1 сек, TBT — до 180 мс. Рассказываем реализацию и trade-off'ы.",{"type":30,"tag":47,"props":48,"children":50},"h2",{"id":49},"google-fonts-блокирует-рендеринг-потеря-38s",[51],{"type":35,"value":52},"Google Fonts блокирует рендеринг: потеря 3.8s",{"type":30,"tag":31,"props":54,"children":55},{},[56,58,64,66,72],{"type":35,"value":57},"Шрифты, подключенные через ",{"type":30,"tag":38,"props":59,"children":61},{"className":60},[],[62],{"type":35,"value":63},"@import",{"type":35,"value":65}," или ",{"type":30,"tag":38,"props":67,"children":69},{"className":68},[],[70],{"type":35,"value":71},"\u003Clink>",{"type":35,"value":73}," с Google Fonts CDN, блокируют рендеринг страницы. FOIT (Flash of Invisible Text) и 3+ round-trip'а добавляют латенси. Lighthouse показал \"Eliminate render-blocking resources\" с потерей 3.8 сек.",{"type":30,"tag":31,"props":75,"children":76},{},[77,79,85,87,93,95,101],{"type":35,"value":78},"Решение: self-hosted шрифты. Использовали пакет ",{"type":30,"tag":38,"props":80,"children":82},{"className":81},[],[83],{"type":35,"value":84},"@fontsource\u002Finter",{"type":35,"value":86},", поместили Woff2 файлы в ",{"type":30,"tag":38,"props":88,"children":90},{"className":89},[],[91],{"type":35,"value":92},"public\u002Ffonts",{"type":35,"value":94},". В Nuxt config добавили ",{"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},"В CSS определили только используемые начертания через ",{"type":30,"tag":38,"props":420,"children":422},{"className":421},[],[423],{"type":35,"value":424},"@font-face",{"type":35,"value":102},{"type":30,"tag":104,"props":427,"children":431},{"code":428,"language":429,"meta":14,"className":430,"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",[432],{"type":30,"tag":38,"props":433,"children":434},{"__ignoreMap":14},[435,443,455,479,500,521,542,592,600,609,620,639,658,678,697,740],{"type":30,"tag":114,"props":436,"children":437},{"class":116,"line":117},[438],{"type":30,"tag":114,"props":439,"children":440},{"style":121},[441],{"type":35,"value":442},"\u002F* assets\u002Fcss\u002Ffonts.css *\u002F\n",{"type":30,"tag":114,"props":444,"children":445},{"class":116,"line":127},[446,450],{"type":30,"tag":114,"props":447,"children":448},{"style":131},[449],{"type":35,"value":424},{"type":30,"tag":114,"props":451,"children":452},{"style":148},[453],{"type":35,"value":454}," {\n",{"type":30,"tag":114,"props":456,"children":457},{"class":116,"line":154},[458,464,469,474],{"type":30,"tag":114,"props":459,"children":461},{"style":460},"--shiki-default:#79B8FF",[462],{"type":35,"value":463},"  font-family",{"type":30,"tag":114,"props":465,"children":466},{"style":148},[467],{"type":35,"value":468},": ",{"type":30,"tag":114,"props":470,"children":471},{"style":199},[472],{"type":35,"value":473},"'Inter'",{"type":30,"tag":114,"props":475,"children":476},{"style":148},[477],{"type":35,"value":478},";\n",{"type":30,"tag":114,"props":480,"children":481},{"class":116,"line":163},[482,487,491,496],{"type":30,"tag":114,"props":483,"children":484},{"style":460},[485],{"type":35,"value":486},"  font-style",{"type":30,"tag":114,"props":488,"children":489},{"style":148},[490],{"type":35,"value":468},{"type":30,"tag":114,"props":492,"children":493},{"style":460},[494],{"type":35,"value":495},"normal",{"type":30,"tag":114,"props":497,"children":498},{"style":148},[499],{"type":35,"value":478},{"type":30,"tag":114,"props":501,"children":502},{"class":116,"line":172},[503,508,512,517],{"type":30,"tag":114,"props":504,"children":505},{"style":460},[506],{"type":35,"value":507},"  font-weight",{"type":30,"tag":114,"props":509,"children":510},{"style":148},[511],{"type":35,"value":468},{"type":30,"tag":114,"props":513,"children":514},{"style":460},[515],{"type":35,"value":516},"400",{"type":30,"tag":114,"props":518,"children":519},{"style":148},[520],{"type":35,"value":478},{"type":30,"tag":114,"props":522,"children":523},{"class":116,"line":181},[524,529,533,538],{"type":30,"tag":114,"props":525,"children":526},{"style":460},[527],{"type":35,"value":528},"  font-display",{"type":30,"tag":114,"props":530,"children":531},{"style":148},[532],{"type":35,"value":468},{"type":30,"tag":114,"props":534,"children":535},{"style":460},[536],{"type":35,"value":537},"swap",{"type":30,"tag":114,"props":539,"children":540},{"style":148},[541],{"type":35,"value":478},{"type":30,"tag":114,"props":543,"children":544},{"class":116,"line":190},[545,550,554,559,564,568,573,578,582,587],{"type":30,"tag":114,"props":546,"children":547},{"style":460},[548],{"type":35,"value":549},"  src",{"type":30,"tag":114,"props":551,"children":552},{"style":148},[553],{"type":35,"value":468},{"type":30,"tag":114,"props":555,"children":556},{"style":460},[557],{"type":35,"value":558},"url",{"type":30,"tag":114,"props":560,"children":561},{"style":148},[562],{"type":35,"value":563},"(",{"type":30,"tag":114,"props":565,"children":566},{"style":199},[567],{"type":35,"value":256},{"type":30,"tag":114,"props":569,"children":570},{"style":148},[571],{"type":35,"value":572},") ",{"type":30,"tag":114,"props":574,"children":575},{"style":460},[576],{"type":35,"value":577},"format",{"type":30,"tag":114,"props":579,"children":580},{"style":148},[581],{"type":35,"value":563},{"type":30,"tag":114,"props":583,"children":584},{"style":199},[585],{"type":35,"value":586},"'woff2'",{"type":30,"tag":114,"props":588,"children":589},{"style":148},[590],{"type":35,"value":591},");\n",{"type":30,"tag":114,"props":593,"children":594},{"class":116,"line":24},[595],{"type":30,"tag":114,"props":596,"children":597},{"style":148},[598],{"type":35,"value":599},"}\n",{"type":30,"tag":114,"props":601,"children":602},{"class":116,"line":227},[603],{"type":30,"tag":114,"props":604,"children":606},{"emptyLinePlaceholder":605},true,[607],{"type":35,"value":608},"\n",{"type":30,"tag":114,"props":610,"children":611},{"class":116,"line":245},[612,616],{"type":30,"tag":114,"props":613,"children":614},{"style":131},[615],{"type":35,"value":424},{"type":30,"tag":114,"props":617,"children":618},{"style":148},[619],{"type":35,"value":454},{"type":30,"tag":114,"props":621,"children":622},{"class":116,"line":263},[623,627,631,635],{"type":30,"tag":114,"props":624,"children":625},{"style":460},[626],{"type":35,"value":463},{"type":30,"tag":114,"props":628,"children":629},{"style":148},[630],{"type":35,"value":468},{"type":30,"tag":114,"props":632,"children":633},{"style":199},[634],{"type":35,"value":473},{"type":30,"tag":114,"props":636,"children":637},{"style":148},[638],{"type":35,"value":478},{"type":30,"tag":114,"props":640,"children":641},{"class":116,"line":277},[642,646,650,654],{"type":30,"tag":114,"props":643,"children":644},{"style":460},[645],{"type":35,"value":486},{"type":30,"tag":114,"props":647,"children":648},{"style":148},[649],{"type":35,"value":468},{"type":30,"tag":114,"props":651,"children":652},{"style":460},[653],{"type":35,"value":495},{"type":30,"tag":114,"props":655,"children":656},{"style":148},[657],{"type":35,"value":478},{"type":30,"tag":114,"props":659,"children":660},{"class":116,"line":286},[661,665,669,674],{"type":30,"tag":114,"props":662,"children":663},{"style":460},[664],{"type":35,"value":507},{"type":30,"tag":114,"props":666,"children":667},{"style":148},[668],{"type":35,"value":468},{"type":30,"tag":114,"props":670,"children":671},{"style":460},[672],{"type":35,"value":673},"600",{"type":30,"tag":114,"props":675,"children":676},{"style":148},[677],{"type":35,"value":478},{"type":30,"tag":114,"props":679,"children":680},{"class":116,"line":294},[681,685,689,693],{"type":30,"tag":114,"props":682,"children":683},{"style":460},[684],{"type":35,"value":528},{"type":30,"tag":114,"props":686,"children":687},{"style":148},[688],{"type":35,"value":468},{"type":30,"tag":114,"props":690,"children":691},{"style":460},[692],{"type":35,"value":537},{"type":30,"tag":114,"props":694,"children":695},{"style":148},[696],{"type":35,"value":478},{"type":30,"tag":114,"props":698,"children":699},{"class":116,"line":310},[700,704,708,712,716,720,724,728,732,736],{"type":30,"tag":114,"props":701,"children":702},{"style":460},[703],{"type":35,"value":549},{"type":30,"tag":114,"props":705,"children":706},{"style":148},[707],{"type":35,"value":468},{"type":30,"tag":114,"props":709,"children":710},{"style":460},[711],{"type":35,"value":558},{"type":30,"tag":114,"props":713,"children":714},{"style":148},[715],{"type":35,"value":563},{"type":30,"tag":114,"props":717,"children":718},{"style":199},[719],{"type":35,"value":352},{"type":30,"tag":114,"props":721,"children":722},{"style":148},[723],{"type":35,"value":572},{"type":30,"tag":114,"props":725,"children":726},{"style":460},[727],{"type":35,"value":577},{"type":30,"tag":114,"props":729,"children":730},{"style":148},[731],{"type":35,"value":563},{"type":30,"tag":114,"props":733,"children":734},{"style":199},[735],{"type":35,"value":586},{"type":30,"tag":114,"props":737,"children":738},{"style":148},[739],{"type":35,"value":591},{"type":30,"tag":114,"props":741,"children":742},{"class":116,"line":326},[743],{"type":30,"tag":114,"props":744,"children":745},{"style":148},[746],{"type":35,"value":599},{"type":30,"tag":31,"props":748,"children":749},{},[750,752,758],{"type":35,"value":751},"С ",{"type":30,"tag":38,"props":753,"children":755},{"className":754},[],[756],{"type":35,"value":757},"font-display: swap",{"type":35,"value":759}," приняли trade-off — вместо невидимого текста показывается системный шрифт, затем происходит замена. LCP упал до 6.4 сек. Прирост бандла — 72 KB (Woff2 compressed), но экономия 3.8 сек оправдана.",{"type":30,"tag":47,"props":761,"children":763},{"id":762},"client-side-гидратация-tbt-2190ms",[764],{"type":35,"value":765},"Client-side гидратация: TBT 2190ms",{"type":30,"tag":31,"props":767,"children":768},{},[769,771,777],{"type":35,"value":770},"Nuxt 3 по умолчанию гидратирует все компоненты на клиенте. В ",{"type":30,"tag":38,"props":772,"children":774},{"className":773},[],[775],{"type":35,"value":776},"app.vue",{"type":35,"value":778}," было 40+ компонентов, Pinia store, composable'ы и третьесторонние библиотеки (Swiper, vue-gtag) блокировали main thread. Performance tab показал 8 \"Long Tasks\", самая долгая — 1240 мс.",{"type":30,"tag":780,"props":781,"children":783},"h3",{"id":782},"ленивая-гидратация-с-приоритизацией",[784],{"type":35,"value":785},"Ленивая гидратация с приоритизацией",{"type":30,"tag":31,"props":787,"children":788},{},[789,791,797],{"type":35,"value":790},"Компоненты below-the-fold гидратируем лениво. После добавления ",{"type":30,"tag":38,"props":792,"children":794},{"className":793},[],[795],{"type":35,"value":796},"@nuxtjs\u002Fweb-vitals",{"type":35,"value":798}," и анализа критического пути приоритизировали компоненты:",{"type":30,"tag":104,"props":800,"children":804},{"code":801,"language":802,"meta":14,"className":803,"style":14},"\u003C!-- pages\u002Findex.vue -->\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003C!-- Above-the-fold: гидратируем сразу -->\n    \u003CHeroSection \u002F>\n    \u003CProductGrid :products=\"products\" \u002F>\n\n    \u003C!-- Below-the-fold: ленивая гидратация -->\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",[805],{"type":30,"tag":38,"props":806,"children":807},{"__ignoreMap":14},[808,816,835,852,860,878,909,916,924,954,982,998,1029,1045,1061,1077,1084,1119,1156,1163,1185,1205,1222,1230,1238],{"type":30,"tag":114,"props":809,"children":810},{"class":116,"line":117},[811],{"type":30,"tag":114,"props":812,"children":813},{"style":121},[814],{"type":35,"value":815},"\u003C!-- pages\u002Findex.vue -->\n",{"type":30,"tag":114,"props":817,"children":818},{"class":116,"line":127},[819,824,830],{"type":30,"tag":114,"props":820,"children":821},{"style":148},[822],{"type":35,"value":823},"\u003C",{"type":30,"tag":114,"props":825,"children":827},{"style":826},"--shiki-default:#85E89D",[828],{"type":35,"value":829},"template",{"type":30,"tag":114,"props":831,"children":832},{"style":148},[833],{"type":35,"value":834},">\n",{"type":30,"tag":114,"props":836,"children":837},{"class":116,"line":154},[838,843,848],{"type":30,"tag":114,"props":839,"children":840},{"style":148},[841],{"type":35,"value":842},"  \u003C",{"type":30,"tag":114,"props":844,"children":845},{"style":826},[846],{"type":35,"value":847},"div",{"type":30,"tag":114,"props":849,"children":850},{"style":148},[851],{"type":35,"value":834},{"type":30,"tag":114,"props":853,"children":854},{"class":116,"line":163},[855],{"type":30,"tag":114,"props":856,"children":857},{"style":121},[858],{"type":35,"value":859},"    \u003C!-- Above-the-fold: гидратируем сразу -->\n",{"type":30,"tag":114,"props":861,"children":862},{"class":116,"line":172},[863,868,873],{"type":30,"tag":114,"props":864,"children":865},{"style":148},[866],{"type":35,"value":867},"    \u003C",{"type":30,"tag":114,"props":869,"children":870},{"style":826},[871],{"type":35,"value":872},"HeroSection",{"type":30,"tag":114,"props":874,"children":875},{"style":148},[876],{"type":35,"value":877}," \u002F>\n",{"type":30,"tag":114,"props":879,"children":880},{"class":116,"line":181},[881,885,890,895,900,905],{"type":30,"tag":114,"props":882,"children":883},{"style":148},[884],{"type":35,"value":867},{"type":30,"tag":114,"props":886,"children":887},{"style":826},[888],{"type":35,"value":889},"ProductGrid",{"type":30,"tag":114,"props":891,"children":892},{"style":142},[893],{"type":35,"value":894}," :products",{"type":30,"tag":114,"props":896,"children":897},{"style":148},[898],{"type":35,"value":899},"=",{"type":30,"tag":114,"props":901,"children":902},{"style":199},[903],{"type":35,"value":904},"\"products\"",{"type":30,"tag":114,"props":906,"children":907},{"style":148},[908],{"type":35,"value":877},{"type":30,"tag":114,"props":910,"children":911},{"class":116,"line":190},[912],{"type":30,"tag":114,"props":913,"children":914},{"emptyLinePlaceholder":605},[915],{"type":35,"value":608},{"type":30,"tag":114,"props":917,"children":918},{"class":116,"line":24},[919],{"type":30,"tag":114,"props":920,"children":921},{"style":121},[922],{"type":35,"value":923},"    \u003C!-- Below-the-fold: ленивая гидратация -->\n",{"type":30,"tag":114,"props":925,"children":926},{"class":116,"line":227},[927,931,936,941,945,950],{"type":30,"tag":114,"props":928,"children":929},{"style":148},[930],{"type":35,"value":867},{"type":30,"tag":114,"props":932,"children":933},{"style":826},[934],{"type":35,"value":935},"LazyFooter",{"type":30,"tag":114,"props":937,"children":938},{"style":142},[939],{"type":35,"value":940}," v-if",{"type":30,"tag":114,"props":942,"children":943},{"style":148},[944],{"type":35,"value":899},{"type":30,"tag":114,"props":946,"children":947},{"style":199},[948],{"type":35,"value":949},"\"mounted\"",{"type":30,"tag":114,"props":951,"children":952},{"style":148},[953],{"type":35,"value":877},{"type":30,"tag":114,"props":955,"children":956},{"class":116,"line":245},[957,961,966,970,974,978],{"type":30,"tag":114,"props":958,"children":959},{"style":148},[960],{"type":35,"value":867},{"type":30,"tag":114,"props":962,"children":963},{"style":826},[964],{"type":35,"value":965},"LazyNewsletterForm",{"type":30,"tag":114,"props":967,"children":968},{"style":142},[969],{"type":35,"value":940},{"type":30,"tag":114,"props":971,"children":972},{"style":148},[973],{"type":35,"value":899},{"type":30,"tag":114,"props":975,"children":976},{"style":199},[977],{"type":35,"value":949},{"type":30,"tag":114,"props":979,"children":980},{"style":148},[981],{"type":35,"value":877},{"type":30,"tag":114,"props":983,"children":984},{"class":116,"line":263},[985,989,994],{"type":30,"tag":114,"props":986,"children":987},{"style":148},[988],{"type":35,"value":867},{"type":30,"tag":114,"props":990,"children":991},{"style":826},[992],{"type":35,"value":993},"client-only",{"type":30,"tag":114,"props":995,"children":996},{"style":148},[997],{"type":35,"value":834},{"type":30,"tag":114,"props":999,"children":1000},{"class":116,"line":277},[1001,1006,1011,1016,1020,1025],{"type":30,"tag":114,"props":1002,"children":1003},{"style":148},[1004],{"type":35,"value":1005},"      \u003C",{"type":30,"tag":114,"props":1007,"children":1008},{"style":826},[1009],{"type":35,"value":1010},"LazyReviewCarousel",{"type":30,"tag":114,"props":1012,"children":1013},{"style":142},[1014],{"type":35,"value":1015}," :reviews",{"type":30,"tag":114,"props":1017,"children":1018},{"style":148},[1019],{"type":35,"value":899},{"type":30,"tag":114,"props":1021,"children":1022},{"style":199},[1023],{"type":35,"value":1024},"\"reviews\"",{"type":30,"tag":114,"props":1026,"children":1027},{"style":148},[1028],{"type":35,"value":877},{"type":30,"tag":114,"props":1030,"children":1031},{"class":116,"line":286},[1032,1037,1041],{"type":30,"tag":114,"props":1033,"children":1034},{"style":148},[1035],{"type":35,"value":1036},"    \u003C\u002F",{"type":30,"tag":114,"props":1038,"children":1039},{"style":826},[1040],{"type":35,"value":993},{"type":30,"tag":114,"props":1042,"children":1043},{"style":148},[1044],{"type":35,"value":834},{"type":30,"tag":114,"props":1046,"children":1047},{"class":116,"line":294},[1048,1053,1057],{"type":30,"tag":114,"props":1049,"children":1050},{"style":148},[1051],{"type":35,"value":1052},"  \u003C\u002F",{"type":30,"tag":114,"props":1054,"children":1055},{"style":826},[1056],{"type":35,"value":847},{"type":30,"tag":114,"props":1058,"children":1059},{"style":148},[1060],{"type":35,"value":834},{"type":30,"tag":114,"props":1062,"children":1063},{"class":116,"line":310},[1064,1069,1073],{"type":30,"tag":114,"props":1065,"children":1066},{"style":148},[1067],{"type":35,"value":1068},"\u003C\u002F",{"type":30,"tag":114,"props":1070,"children":1071},{"style":826},[1072],{"type":35,"value":829},{"type":30,"tag":114,"props":1074,"children":1075},{"style":148},[1076],{"type":35,"value":834},{"type":30,"tag":114,"props":1078,"children":1079},{"class":116,"line":326},[1080],{"type":30,"tag":114,"props":1081,"children":1082},{"emptyLinePlaceholder":605},[1083],{"type":35,"value":608},{"type":30,"tag":114,"props":1085,"children":1086},{"class":116,"line":342},[1087,1091,1096,1101,1106,1110,1115],{"type":30,"tag":114,"props":1088,"children":1089},{"style":148},[1090],{"type":35,"value":823},{"type":30,"tag":114,"props":1092,"children":1093},{"style":826},[1094],{"type":35,"value":1095},"script",{"type":30,"tag":114,"props":1097,"children":1098},{"style":142},[1099],{"type":35,"value":1100}," setup",{"type":30,"tag":114,"props":1102,"children":1103},{"style":142},[1104],{"type":35,"value":1105}," lang",{"type":30,"tag":114,"props":1107,"children":1108},{"style":148},[1109],{"type":35,"value":899},{"type":30,"tag":114,"props":1111,"children":1112},{"style":199},[1113],{"type":35,"value":1114},"\"ts\"",{"type":30,"tag":114,"props":1116,"children":1117},{"style":148},[1118],{"type":35,"value":834},{"type":30,"tag":114,"props":1120,"children":1121},{"class":116,"line":359},[1122,1127,1132,1137,1142,1146,1151],{"type":30,"tag":114,"props":1123,"children":1124},{"style":131},[1125],{"type":35,"value":1126},"const",{"type":30,"tag":114,"props":1128,"children":1129},{"style":460},[1130],{"type":35,"value":1131}," mounted",{"type":30,"tag":114,"props":1133,"children":1134},{"style":131},[1135],{"type":35,"value":1136}," =",{"type":30,"tag":114,"props":1138,"children":1139},{"style":142},[1140],{"type":35,"value":1141}," ref",{"type":30,"tag":114,"props":1143,"children":1144},{"style":148},[1145],{"type":35,"value":563},{"type":30,"tag":114,"props":1147,"children":1148},{"style":460},[1149],{"type":35,"value":1150},"false",{"type":30,"tag":114,"props":1152,"children":1153},{"style":148},[1154],{"type":35,"value":1155},")\n",{"type":30,"tag":114,"props":1157,"children":1158},{"class":116,"line":371},[1159],{"type":30,"tag":114,"props":1160,"children":1161},{"emptyLinePlaceholder":605},[1162],{"type":35,"value":608},{"type":30,"tag":114,"props":1164,"children":1165},{"class":116,"line":380},[1166,1171,1176,1181],{"type":30,"tag":114,"props":1167,"children":1168},{"style":142},[1169],{"type":35,"value":1170},"onMounted",{"type":30,"tag":114,"props":1172,"children":1173},{"style":148},[1174],{"type":35,"value":1175},"(() ",{"type":30,"tag":114,"props":1177,"children":1178},{"style":131},[1179],{"type":35,"value":1180},"=>",{"type":30,"tag":114,"props":1182,"children":1183},{"style":148},[1184],{"type":35,"value":454},{"type":30,"tag":114,"props":1186,"children":1187},{"class":116,"line":389},[1188,1193,1197,1201],{"type":30,"tag":114,"props":1189,"children":1190},{"style":142},[1191],{"type":35,"value":1192},"  requestIdleCallback",{"type":30,"tag":114,"props":1194,"children":1195},{"style":148},[1196],{"type":35,"value":1175},{"type":30,"tag":114,"props":1198,"children":1199},{"style":131},[1200],{"type":35,"value":1180},{"type":30,"tag":114,"props":1202,"children":1203},{"style":148},[1204],{"type":35,"value":454},{"type":30,"tag":114,"props":1206,"children":1207},{"class":116,"line":398},[1208,1213,1217],{"type":30,"tag":114,"props":1209,"children":1210},{"style":148},[1211],{"type":35,"value":1212},"    mounted.value ",{"type":30,"tag":114,"props":1214,"children":1215},{"style":131},[1216],{"type":35,"value":899},{"type":30,"tag":114,"props":1218,"children":1219},{"style":460},[1220],{"type":35,"value":1221}," true\n",{"type":30,"tag":114,"props":1223,"children":1224},{"class":116,"line":407},[1225],{"type":30,"tag":114,"props":1226,"children":1227},{"style":148},[1228],{"type":35,"value":1229},"  })\n",{"type":30,"tag":114,"props":1231,"children":1233},{"class":116,"line":1232},24,[1234],{"type":30,"tag":114,"props":1235,"children":1236},{"style":148},[1237],{"type":35,"value":413},{"type":30,"tag":114,"props":1239,"children":1241},{"class":116,"line":1240},25,[1242,1246,1250],{"type":30,"tag":114,"props":1243,"children":1244},{"style":148},[1245],{"type":35,"value":1068},{"type":30,"tag":114,"props":1247,"children":1248},{"style":826},[1249],{"type":35,"value":1095},{"type":30,"tag":114,"props":1251,"children":1252},{"style":148},[1253],{"type":35,"value":834},{"type":30,"tag":31,"props":1255,"children":1256},{},[1257,1259,1265,1267,1273],{"type":35,"value":1258},"Wrapper ",{"type":30,"tag":38,"props":1260,"children":1262},{"className":1261},[],[1263],{"type":35,"value":1264},"\u003Cclient-only>",{"type":35,"value":1266}," исключил Swiper и другие DOM-dependent библиотеки из SSR. ",{"type":30,"tag":38,"props":1268,"children":1270},{"className":1269},[],[1271],{"type":35,"value":1272},"requestIdleCallback",{"type":35,"value":1274}," запускает гидратацию, когда main thread свободен. TBT упал до 840 мс.",{"type":30,"tag":780,"props":1276,"children":1278},{"id":1277},"bundle-splitting-и-code-splitting",[1279],{"type":35,"value":1280},"Bundle splitting и code splitting",{"type":30,"tag":31,"props":1282,"children":1283},{},[1284,1286,1292,1294,1300,1302,1308,1310,1316],{"type":35,"value":1285},"С помощью ",{"type":30,"tag":38,"props":1287,"children":1289},{"className":1288},[],[1290],{"type":35,"value":1291},"vite-plugin-inspect",{"type":35,"value":1293}," анализировали бандл. Swiper занимал 168 KB minified, но использовался только в карусели отзывов. Вместо динамического импорта сначала уменьшили использование — оставили только модуль ",{"type":30,"tag":38,"props":1295,"children":1297},{"className":1296},[],[1298],{"type":35,"value":1299},"Navigation",{"type":35,"value":1301},", убрали ",{"type":30,"tag":38,"props":1303,"children":1305},{"className":1304},[],[1306],{"type":35,"value":1307},"Virtual",{"type":35,"value":1309}," и ",{"type":30,"tag":38,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":35,"value":1315},"Autoplay",{"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":605},[1385],{"type":35,"value":608},{"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":1136},{"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":1180},{"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},"Бандл сократился с 168 KB до 42 KB. ",{"type":30,"tag":38,"props":1427,"children":1429},{"className":1428},[],[1430],{"type":35,"value":1431},"\u003CLazyReviewCarousel>",{"type":35,"value":1433}," уже ленивый, поэтому не попал в основной бандл.",{"type":30,"tag":47,"props":1435,"children":1437},{"id":1436},"content-visibility-сокращение-периода-рендеринга",[1438],{"type":35,"value":1439},"Content-visibility: сокращение периода рендеринга",{"type":30,"tag":31,"props":1441,"children":1442},{},[1443,1445,1451],{"type":35,"value":1444},"Product grid содержит 48 карточек, каждая — image + title + price + button. При инициальном рендере браузер одновременно считает layout для всех 48 карточек. CSS свойство ",{"type":30,"tag":38,"props":1446,"children":1448},{"className":1447},[],[1449],{"type":35,"value":1450},"content-visibility: auto",{"type":35,"value":1452}," исключило below-the-fold карточки из рендеринга:",{"type":30,"tag":104,"props":1454,"children":1456},{"code":1455,"language":429,"meta":14,"className":430,"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":454},{"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":460},[1486],{"type":35,"value":1487},"  content-visibility",{"type":30,"tag":114,"props":1489,"children":1490},{"style":148},[1491],{"type":35,"value":468},{"type":30,"tag":114,"props":1493,"children":1494},{"style":460},[1495],{"type":35,"value":1496},"auto",{"type":30,"tag":114,"props":1498,"children":1499},{"style":148},[1500],{"type":35,"value":478},{"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":460},[1507],{"type":35,"value":1508},"  contain-intrinsic-size",{"type":30,"tag":114,"props":1510,"children":1511},{"style":148},[1512],{"type":35,"value":468},{"type":30,"tag":114,"props":1514,"children":1515},{"style":460},[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":460},[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":478},{"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":599},{"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}," указывает браузеру placeholder размер карточки, избегая проблем со scroll position. LCP упал с 6.4 до 3.9 сек. Trade-off: карточки вне viewport рендерятся при скролле, но добавил лишь 12 мс к INP (приемлемо).",{"type":30,"tag":47,"props":1555,"children":1557},{"id":1556},"edge-кеширование-ttfb-12s-40ms",[1558],{"type":35,"value":1559},"Edge кеширование: TTFB 1.2s → 40ms",{"type":30,"tag":31,"props":1561,"children":1562},{},[1563,1565,1571],{"type":35,"value":1564},"Cloudflare Pages по умолчанию не кеширует HTML, каждый запрос идет на origin. SSR ответ занимает ~1200 мс (API + рендеринг). Через файл ",{"type":30,"tag":38,"props":1566,"children":1568},{"className":1567},[],[1569],{"type":35,"value":1570},"_headers",{"type":35,"value":1572}," включили edge кеширование:",{"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,1590,1592,1598],{"type":30,"tag":38,"props":1585,"children":1587},{"className":1586},[],[1588],{"type":35,"value":1589},"s-maxage=600",{"type":35,"value":1591}," — Cloudflare edge кеширует на 10 минут. ",{"type":30,"tag":38,"props":1593,"children":1595},{"className":1594},[],[1596],{"type":35,"value":1597},"stale-while-revalidate=86400",{"type":35,"value":1599}," — при истечении cache показывает старую версию, в фоне обновляет. TTFB упал до 40 мс (edge hit). Origin request только при cache miss или revalidation.",{"type":30,"tag":780,"props":1601,"children":1603},{"id":1602},"isr-с-гибридным-рендерингом",[1604],{"type":35,"value":1605},"ISR с гибридным рендерингом",{"type":30,"tag":31,"props":1607,"children":1608},{},[1609,1611,1617],{"type":35,"value":1610},"Для product pages использовали Incremental Static Regeneration. В Nuxt через ",{"type":30,"tag":38,"props":1612,"children":1614},{"className":1613},[],[1615],{"type":35,"value":1616},"routeRules",{"type":35,"value":102},{"type":30,"tag":104,"props":1619,"children":1621},{"code":1620,"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 минут\n      prerender: false\n    },\n    '\u002F': { \n      swr: 300   \u002F\u002F 5 минут\n    }\n  }\n})\n",[1622],{"type":30,"tag":38,"props":1623,"children":1624},{"__ignoreMap":14},[1625,1632,1651,1659,1672,1694,1707,1715,1727,1744,1751,1758],{"type":30,"tag":114,"props":1626,"children":1627},{"class":116,"line":117},[1628],{"type":30,"tag":114,"props":1629,"children":1630},{"style":121},[1631],{"type":35,"value":124},{"type":30,"tag":114,"props":1633,"children":1634},{"class":116,"line":127},[1635,1639,1643,1647],{"type":30,"tag":114,"props":1636,"children":1637},{"style":131},[1638],{"type":35,"value":134},{"type":30,"tag":114,"props":1640,"children":1641},{"style":131},[1642],{"type":35,"value":139},{"type":30,"tag":114,"props":1644,"children":1645},{"style":142},[1646],{"type":35,"value":145},{"type":30,"tag":114,"props":1648,"children":1649},{"style":148},[1650],{"type":35,"value":151},{"type":30,"tag":114,"props":1652,"children":1653},{"class":116,"line":154},[1654],{"type":30,"tag":114,"props":1655,"children":1656},{"style":148},[1657],{"type":35,"value":1658},"  routeRules: {\n",{"type":30,"tag":114,"props":1660,"children":1661},{"class":116,"line":163},[1662,1667],{"type":30,"tag":114,"props":1663,"children":1664},{"style":199},[1665],{"type":35,"value":1666},"    '\u002Fproducts\u002F**'",{"type":30,"tag":114,"props":1668,"children":1669},{"style":148},[1670],{"type":35,"value":1671},": { \n",{"type":30,"tag":114,"props":1673,"children":1674},{"class":116,"line":172},[1675,1680,1684,1689],{"type":30,"tag":114,"props":1676,"children":1677},{"style":148},[1678],{"type":35,"value":1679},"      swr: ",{"type":30,"tag":114,"props":1681,"children":1682},{"style":460},[1683],{"type":35,"value":673},{"type":30,"tag":114,"props":1685,"children":1686},{"style":148},[1687],{"type":35,"value":1688},",  ",{"type":30,"tag":114,"props":1690,"children":1691},{"style":121},[1692],{"type":35,"value":1693},"\u002F\u002F 10 минут\n",{"type":30,"tag":114,"props":1695,"children":1696},{"class":116,"line":181},[1697,1702],{"type":30,"tag":114,"props":1698,"children":1699},{"style":148},[1700],{"type":35,"value":1701},"      prerender: ",{"type":30,"tag":114,"props":1703,"children":1704},{"style":460},[1705],{"type":35,"value":1706},"false\n",{"type":30,"tag":114,"props":1708,"children":1709},{"class":116,"line":190},[1710],{"type":30,"tag":114,"props":1711,"children":1712},{"style":148},[1713],{"type":35,"value":1714},"    },\n",{"type":30,"tag":114,"props":1716,"children":1717},{"class":116,"line":24},[1718,1723],{"type":30,"tag":114,"props":1719,"children":1720},{"style":199},[1721],{"type":35,"value":1722},"    '\u002F'",{"type":30,"tag":114,"props":1724,"children":1725},{"style":148},[1726],{"type":35,"value":1671},{"type":30,"tag":114,"props":1728,"children":1729},{"class":116,"line":227},[1730,1734,1739],{"type":30,"tag":114,"props":1731,"children":1732},{"style":148},[1733],{"type":35,"value":1679},{"type":30,"tag":114,"props":1735,"children":1736},{"style":460},[1737],{"type":35,"value":1738},"300",{"type":30,"tag":114,"props":1740,"children":1741},{"style":121},[1742],{"type":35,"value":1743},"   \u002F\u002F 5 минут\n",{"type":30,"tag":114,"props":1745,"children":1746},{"class":116,"line":245},[1747],{"type":30,"tag":114,"props":1748,"children":1749},{"style":148},[1750],{"type":35,"value":395},{"type":30,"tag":114,"props":1752,"children":1753},{"class":116,"line":263},[1754],{"type":30,"tag":114,"props":1755,"children":1756},{"style":148},[1757],{"type":35,"value":404},{"type":30,"tag":114,"props":1759,"children":1760},{"class":116,"line":277},[1761],{"type":30,"tag":114,"props":1762,"children":1763},{"style":148},[1764],{"type":35,"value":413},{"type":30,"tag":31,"props":1766,"children":1767},{},[1768],{"type":35,"value":1769},"Первый запрос — SSR, затем edge кеш. Для обновления стока используем webhook для manual purge:",{"type":30,"tag":104,"props":1771,"children":1773},{"code":1772,"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",[1774],{"type":30,"tag":38,"props":1775,"children":1776},{"__ignoreMap":14},[1777,1785,1833,1875,1883,1939,1956,1964,2011,2028,2035,2061,2087,2095,2102,2109,2132],{"type":30,"tag":114,"props":1778,"children":1779},{"class":116,"line":117},[1780],{"type":30,"tag":114,"props":1781,"children":1782},{"style":121},[1783],{"type":35,"value":1784},"\u002F\u002F server\u002Fapi\u002Fpurge-cache.post.ts\n",{"type":30,"tag":114,"props":1786,"children":1787},{"class":116,"line":127},[1788,1792,1796,1801,1805,1810,1815,1821,1825,1829],{"type":30,"tag":114,"props":1789,"children":1790},{"style":131},[1791],{"type":35,"value":134},{"type":30,"tag":114,"props":1793,"children":1794},{"style":131},[1795],{"type":35,"value":139},{"type":30,"tag":114,"props":1797,"children":1798},{"style":142},[1799],{"type":35,"value":1800}," defineEventHandler",{"type":30,"tag":114,"props":1802,"children":1803},{"style":148},[1804],{"type":35,"value":563},{"type":30,"tag":114,"props":1806,"children":1807},{"style":131},[1808],{"type":35,"value":1809},"async",{"type":30,"tag":114,"props":1811,"children":1812},{"style":148},[1813],{"type":35,"value":1814}," (",{"type":30,"tag":114,"props":1816,"children":1818},{"style":1817},"--shiki-default:#FFAB70",[1819],{"type":35,"value":1820},"event",{"type":30,"tag":114,"props":1822,"children":1823},{"style":148},[1824],{"type":35,"value":572},{"type":30,"tag":114,"props":1826,"children":1827},{"style":131},[1828],{"type":35,"value":1180},{"type":30,"tag":114,"props":1830,"children":1831},{"style":148},[1832],{"type":35,"value":454},{"type":30,"tag":114,"props":1834,"children":1835},{"class":116,"line":154},[1836,1841,1846,1851,1856,1860,1865,1870],{"type":30,"tag":114,"props":1837,"children":1838},{"style":131},[1839],{"type":35,"value":1840},"  const",{"type":30,"tag":114,"props":1842,"children":1843},{"style":148},[1844],{"type":35,"value":1845}," { ",{"type":30,"tag":114,"props":1847,"children":1848},{"style":460},[1849],{"type":35,"value":1850},"productId",{"type":30,"tag":114,"props":1852,"children":1853},{"style":148},[1854],{"type":35,"value":1855}," } ",{"type":30,"tag":114,"props":1857,"children":1858},{"style":131},[1859],{"type":35,"value":899},{"type":30,"tag":114,"props":1861,"children":1862},{"style":131},[1863],{"type":35,"value":1864}," await",{"type":30,"tag":114,"props":1866,"children":1867},{"style":142},[1868],{"type":35,"value":1869}," readBody",{"type":30,"tag":114,"props":1871,"children":1872},{"style":148},[1873],{"type":35,"value":1874},"(event)\n",{"type":30,"tag":114,"props":1876,"children":1877},{"class":116,"line":163},[1878],{"type":30,"tag":114,"props":1879,"children":1880},{"style":148},[1881],{"type":35,"value":1882},"  \n",{"type":30,"tag":114,"props":1884,"children":1885},{"class":116,"line":172},[1886,1891,1896,1900,1905,1910,1915,1920,1924,1929,1934],{"type":30,"tag":114,"props":1887,"children":1888},{"style":131},[1889],{"type":35,"value":1890},"  await",{"type":30,"tag":114,"props":1892,"children":1893},{"style":142},[1894],{"type":35,"value":1895}," fetch",{"type":30,"tag":114,"props":1897,"children":1898},{"style":148},[1899],{"type":35,"value":563},{"type":30,"tag":114,"props":1901,"children":1902},{"style":199},[1903],{"type":35,"value":1904},"`https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Fzones\u002F${",{"type":30,"tag":114,"props":1906,"children":1907},{"style":148},[1908],{"type":35,"value":1909},"process",{"type":30,"tag":114,"props":1911,"children":1912},{"style":199},[1913],{"type":35,"value":1914},".",{"type":30,"tag":114,"props":1916,"children":1917},{"style":148},[1918],{"type":35,"value":1919},"env",{"type":30,"tag":114,"props":1921,"children":1922},{"style":199},[1923],{"type":35,"value":1914},{"type":30,"tag":114,"props":1925,"children":1926},{"style":460},[1927],{"type":35,"value":1928},"CF_ZONE_ID",{"type":30,"tag":114,"props":1930,"children":1931},{"style":199},[1932],{"type":35,"value":1933},"}\u002Fpurge_cache`",{"type":30,"tag":114,"props":1935,"children":1936},{"style":148},[1937],{"type":35,"value":1938},", {\n",{"type":30,"tag":114,"props":1940,"children":1941},{"class":116,"line":181},[1942,1947,1952],{"type":30,"tag":114,"props":1943,"children":1944},{"style":148},[1945],{"type":35,"value":1946},"    method: ",{"type":30,"tag":114,"props":1948,"children":1949},{"style":199},[1950],{"type":35,"value":1951},"'POST'",{"type":30,"tag":114,"props":1953,"children":1954},{"style":148},[1955],{"type":35,"value":207},{"type":30,"tag":114,"props":1957,"children":1958},{"class":116,"line":190},[1959],{"type":30,"tag":114,"props":1960,"children":1961},{"style":148},[1962],{"type":35,"value":1963},"    headers: {\n",{"type":30,"tag":114,"props":1965,"children":1966},{"class":116,"line":24},[1967,1972,1976,1981,1985,1989,1993,1997,2002,2007],{"type":30,"tag":114,"props":1968,"children":1969},{"style":199},[1970],{"type":35,"value":1971},"      'Authorization'",{"type":30,"tag":114,"props":1973,"children":1974},{"style":148},[1975],{"type":35,"value":468},{"type":30,"tag":114,"props":1977,"children":1978},{"style":199},[1979],{"type":35,"value":1980},"`Bearer ${",{"type":30,"tag":114,"props":1982,"children":1983},{"style":148},[1984],{"type":35,"value":1909},{"type":30,"tag":114,"props":1986,"children":1987},{"style":199},[1988],{"type":35,"value":1914},{"type":30,"tag":114,"props":1990,"children":1991},{"style":148},[1992],{"type":35,"value":1919},{"type":30,"tag":114,"props":1994,"children":1995},{"style":199},[1996],{"type":35,"value":1914},{"type":30,"tag":114,"props":1998,"children":1999},{"style":460},[2000],{"type":35,"value":2001},"CF_API_TOKEN",{"type":30,"tag":114,"props":2003,"children":2004},{"style":199},[2005],{"type":35,"value":2006},"}`",{"type":30,"tag":114,"props":2008,"children":2009},{"style":148},[2010],{"type":35,"value":207},{"type":30,"tag":114,"props":2012,"children":2013},{"class":116,"line":227},[2014,2019,2023],{"type":30,"tag":114,"props":2015,"children":2016},{"style":199},[2017],{"type":35,"value":2018},"      'Content-Type'",{"type":30,"tag":114,"props":2020,"children":2021},{"style":148},[2022],{"type":35,"value":468},{"type":30,"tag":114,"props":2024,"children":2025},{"style":199},[2026],{"type":35,"value":2027},"'application\u002Fjson'\n",{"type":30,"tag":114,"props":2029,"children":2030},{"class":116,"line":245},[2031],{"type":30,"tag":114,"props":2032,"children":2033},{"style":148},[2034],{"type":35,"value":1714},{"type":30,"tag":114,"props":2036,"children":2037},{"class":116,"line":263},[2038,2043,2048,2052,2057],{"type":30,"tag":114,"props":2039,"children":2040},{"style":148},[2041],{"type":35,"value":2042},"    body: ",{"type":30,"tag":114,"props":2044,"children":2045},{"style":460},[2046],{"type":35,"value":2047},"JSON",{"type":30,"tag":114,"props":2049,"children":2050},{"style":148},[2051],{"type":35,"value":1914},{"type":30,"tag":114,"props":2053,"children":2054},{"style":142},[2055],{"type":35,"value":2056},"stringify",{"type":30,"tag":114,"props":2058,"children":2059},{"style":148},[2060],{"type":35,"value":151},{"type":30,"tag":114,"props":2062,"children":2063},{"class":116,"line":277},[2064,2069,2074,2078,2082],{"type":30,"tag":114,"props":2065,"children":2066},{"style":148},[2067],{"type":35,"value":2068},"      files: [",{"type":30,"tag":114,"props":2070,"children":2071},{"style":199},[2072],{"type":35,"value":2073},"`https:\u002F\u002Fexample.com\u002Fproducts\u002F${",{"type":30,"tag":114,"props":2075,"children":2076},{"style":148},[2077],{"type":35,"value":1850},{"type":30,"tag":114,"props":2079,"children":2080},{"style":199},[2081],{"type":35,"value":2006},{"type":30,"tag":114,"props":2083,"children":2084},{"style":148},[2085],{"type":35,"value":2086},"]\n",{"type":30,"tag":114,"props":2088,"children":2089},{"class":116,"line":286},[2090],{"type":30,"tag":114,"props":2091,"children":2092},{"style":148},[2093],{"type":35,"value":2094},"    })\n",{"type":30,"tag":114,"props":2096,"children":2097},{"class":116,"line":294},[2098],{"type":30,"tag":114,"props":2099,"children":2100},{"style":148},[2101],{"type":35,"value":1229},{"type":30,"tag":114,"props":2103,"children":2104},{"class":116,"line":310},[2105],{"type":30,"tag":114,"props":2106,"children":2107},{"style":148},[2108],{"type":35,"value":1882},{"type":30,"tag":114,"props":2110,"children":2111},{"class":116,"line":326},[2112,2117,2122,2127],{"type":30,"tag":114,"props":2113,"children":2114},{"style":131},[2115],{"type":35,"value":2116},"  return",{"type":30,"tag":114,"props":2118,"children":2119},{"style":148},[2120],{"type":35,"value":2121}," { success: ",{"type":30,"tag":114,"props":2123,"children":2124},{"style":460},[2125],{"type":35,"value":2126},"true",{"type":30,"tag":114,"props":2128,"children":2129},{"style":148},[2130],{"type":35,"value":2131}," }\n",{"type":30,"tag":114,"props":2133,"children":2134},{"class":116,"line":342},[2135],{"type":30,"tag":114,"props":2136,"children":2137},{"style":148},[2138],{"type":35,"value":413},{"type":30,"tag":47,"props":2140,"children":2142},{"id":2141},"сравнение-бенчмарков",[2143],{"type":35,"value":2144},"Сравнение бенчмарков",{"type":30,"tag":2146,"props":2147,"children":2148},"table",{},[2149,2178],{"type":30,"tag":2150,"props":2151,"children":2152},"thead",{},[2153],{"type":30,"tag":2154,"props":2155,"children":2156},"tr",{},[2157,2163,2168,2173],{"type":30,"tag":2158,"props":2159,"children":2160},"th",{},[2161],{"type":35,"value":2162},"Метрика",{"type":30,"tag":2158,"props":2164,"children":2165},{},[2166],{"type":35,"value":2167},"До",{"type":30,"tag":2158,"props":2169,"children":2170},{},[2171],{"type":35,"value":2172},"После",{"type":30,"tag":2158,"props":2174,"children":2175},{},[2176],{"type":35,"value":2177},"Изменение",{"type":30,"tag":2179,"props":2180,"children":2181},"tbody",{},[2182,2206,2229,2252,2275,2298],{"type":30,"tag":2154,"props":2183,"children":2184},{},[2185,2191,2196,2201],{"type":30,"tag":2186,"props":2187,"children":2188},"td",{},[2189],{"type":35,"value":2190},"LCP",{"type":30,"tag":2186,"props":2192,"children":2193},{},[2194],{"type":35,"value":2195},"10.2s",{"type":30,"tag":2186,"props":2197,"children":2198},{},[2199],{"type":35,"value":2200},"2.1s",{"type":30,"tag":2186,"props":2202,"children":2203},{},[2204],{"type":35,"value":2205},"-79%",{"type":30,"tag":2154,"props":2207,"children":2208},{},[2209,2214,2219,2224],{"type":30,"tag":2186,"props":2210,"children":2211},{},[2212],{"type":35,"value":2213},"TBT",{"type":30,"tag":2186,"props":2215,"children":2216},{},[2217],{"type":35,"value":2218},"2190ms",{"type":30,"tag":2186,"props":2220,"children":2221},{},[2222],{"type":35,"value":2223},"180ms",{"type":30,"tag":2186,"props":2225,"children":2226},{},[2227],{"type":35,"value":2228},"-92%",{"type":30,"tag":2154,"props":2230,"children":2231},{},[2232,2237,2242,2247],{"type":30,"tag":2186,"props":2233,"children":2234},{},[2235],{"type":35,"value":2236},"TTFB",{"type":30,"tag":2186,"props":2238,"children":2239},{},[2240],{"type":35,"value":2241},"1200ms",{"type":30,"tag":2186,"props":2243,"children":2244},{},[2245],{"type":35,"value":2246},"40ms",{"type":30,"tag":2186,"props":2248,"children":2249},{},[2250],{"type":35,"value":2251},"-97%",{"type":30,"tag":2154,"props":2253,"children":2254},{},[2255,2260,2265,2270],{"type":30,"tag":2186,"props":2256,"children":2257},{},[2258],{"type":35,"value":2259},"FCP",{"type":30,"tag":2186,"props":2261,"children":2262},{},[2263],{"type":35,"value":2264},"4.8s",{"type":30,"tag":2186,"props":2266,"children":2267},{},[2268],{"type":35,"value":2269},"1.2s",{"type":30,"tag":2186,"props":2271,"children":2272},{},[2273],{"type":35,"value":2274},"-75%",{"type":30,"tag":2154,"props":2276,"children":2277},{},[2278,2283,2288,2293],{"type":30,"tag":2186,"props":2279,"children":2280},{},[2281],{"type":35,"value":2282},"CLS",{"type":30,"tag":2186,"props":2284,"children":2285},{},[2286],{"type":35,"value":2287},"0.18",{"type":30,"tag":2186,"props":2289,"children":2290},{},[2291],{"type":35,"value":2292},"0.02",{"type":30,"tag":2186,"props":2294,"children":2295},{},[2296],{"type":35,"value":2297},"-89%",{"type":30,"tag":2154,"props":2299,"children":2300},{},[2301,2306,2311,2316],{"type":30,"tag":2186,"props":2302,"children":2303},{},[2304],{"type":35,"value":2305},"Bundle (initial)",{"type":30,"tag":2186,"props":2307,"children":2308},{},[2309],{"type":35,"value":2310},"284 KB",{"type":30,"tag":2186,"props":2312,"children":2313},{},[2314],{"type":35,"value":2315},"186 KB",{"type":30,"tag":2186,"props":2317,"children":2318},{},[2319],{"type":35,"value":2320},"-34%",{"type":30,"tag":31,"props":2322,"children":2323},{},[2324],{"type":35,"value":2325},"Тест: Chrome 121, 4G throttling, Lighthouse CI. Среднее 10 прогонов. LCP теперь ниже 2.5 сек — Google \"Good\" threshold достигнут.",{"type":30,"tag":47,"props":2327,"children":2329},{"id":2328},"trade-offы-и-внимание",[2330],{"type":35,"value":2331},"Trade-off'ы и внимание",{"type":30,"tag":31,"props":2333,"children":2334},{},[2335],{"type":35,"value":2336},"Self-hosted шрифты теряют глобальную CDN сеть, но Cloudflare Pages уже edge-hosted. С Woff2 дополнительная латенси минимальна. Ленивая гидратация снижает initial interactivity — below-the-fold компоненты становятся интерактивными после mounted. Добавьте в аналитику метрику \"time to interactive below fold\".",{"type":30,"tag":31,"props":2338,"children":2339},{},[2340,2345,2347,2353,2355,2361],{"type":30,"tag":38,"props":2341,"children":2343},{"className":2342},[],[2344],{"type":35,"value":43},{"type":35,"value":2346}," не поддерживается в Safari до 17.4, используйте ",{"type":30,"tag":38,"props":2348,"children":2350},{"className":2349},[],[2351],{"type":35,"value":2352},"@supports",{"type":35,"value":2354},". Edge кеширование конфликтует с персонализацией — разделите через ",{"type":30,"tag":38,"props":2356,"children":2358},{"className":2357},[],[2359],{"type":35,"value":2360},"Cache-Control: private",{"type":35,"value":2362}," или client-side рендеринг для корзины и авторизации.",{"type":30,"tag":31,"props":2364,"children":2365},{},[2366],{"type":35,"value":2367},"ISR webhook purge — ручной процесс, интегрируйте с inventory системой. Для критичных страниц (checkout, payment) отключите ISR.",{"type":30,"tag":47,"props":2369,"children":2371},{"id":2370},"масштабируемость-с-composable-архитектурой",[2372],{"type":35,"value":2373},"Масштабируемость с Composable архитектурой",{"type":30,"tag":31,"props":2375,"children":2376},{},[2377,2379,2388],{"type":35,"value":2378},"Эти оптимизации тестировали на ",{"type":30,"tag":2380,"props":2381,"children":2385},"a",{"href":2382,"rel":2383},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Fheadless",[2384],"nofollow",[2386],{"type":35,"value":2387},"Headless Commerce",{"type":35,"value":2389}," — Nuxt 3 frontend, Shopify Storefront API backend. Паттерн работает в Next.js + Hydrogen и Remix. Edge-кеш стратегия framework-agnostic, расширяется через Cloudflare Workers KV или Vercel Edge Config. Добавьте RUM (Real User Monitoring) — Cloudflare Web Analytics или Sentry Performance.",{"type":30,"tag":31,"props":2391,"children":2392},{},[2393,2395,2401],{"type":35,"value":2394},"LCP 2.1 сек — Google \"Good\", но на мобилях 4G ниже требует тестирования. Progressive enhancement — критичный контент должен рендериться без JavaScript. Используйте Nuxt ",{"type":30,"tag":38,"props":2396,"children":2398},{"className":2397},[],[2399],{"type":35,"value":2400},"\u003CNoScript>",{"type":35,"value":2402}," компонент.",{"type":30,"tag":104,"props":2404,"children":2406},{"code":2405},"SLUG: nuxt-3-cloudflare-pages-lcp-optimizatsiya\n",[2407],{"type":30,"tag":38,"props":2408,"children":2409},{"__ignoreMap":14},[2410],{"type":35,"value":2405},{"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":762,"depth":127,"text":765,"children":2421},[2422,2423],{"id":782,"depth":154,"text":785},{"id":1277,"depth":154,"text":1280},{"id":1436,"depth":127,"text":1439},{"id":1556,"depth":127,"text":1559,"children":2426},[2427],{"id":1602,"depth":154,"text":1605},{"id":2141,"depth":127,"text":2144},{"id":2328,"depth":127,"text":2331},{"id":2370,"depth":127,"text":2373},"markdown","content:ru:tech:nuxt-3-cloudflare-pages-lcp-optimizatsiya.md","content","ru\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimizatsiya.md","ru\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimizatsiya","md",1781762691759]