[{"data":1,"prerenderedAt":1548},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Ftech\u002Fssg-strategii-dlya-nuxt-3":13},{"i18nKey":4,"paths":5},"tech-007-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Ftech\u002Fssg-leitfaden-fuer-nuxt-3","\u002Fen\u002Ftech\u002Fnuxt-3-ssg-prerender-strategies-build-optimization","\u002Fes\u002Ftech\u002Festrategias-prerender-nuxt-3","\u002Ffr\u002Ftech\u002Fstrategie-prerender-nuxt-3-optimisation-build","\u002Fit\u002Ftech\u002Fstrategie-prerender-nuxt-3","\u002Fru\u002Ftech\u002Fssg-strategii-dlya-nuxt-3","\u002Ftr\u002Ftech\u002Fnuxt-3-ssg-prerender-stratejileri-ve-build-optimizasyonu",{"_path":11,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1542,"_id":1543,"_source":1544,"_file":1545,"_stem":1546,"_extension":1547},"tech",false,"","Nuxt 3 SSG: Strategii Prerender'a i Optimizacija Sborki","Static site generation v Nuxt 3 so strategijami route rules, payload extraction i incremental regeneration. Sokraščenie vremeni sborki s 40 sekund do 8 sekund.","2026-05-21",[21,22,23,24,25],"nuxt-3","ssg","prerender","build-optimization","vue",8,"Roibase",{"type":29,"children":30,"toc":1531},"root",[31,55,62,67,80,92,112,125,131,179,481,502,509,522,692,719,732,738,743,762,831,836,854,978,983,989,1002,1073,1085,1090,1096,1101,1357,1370,1384,1390,1395,1506,1511,1516,1520,1525],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36,39,46,48,53],{"type":37,"value":38},"text","Motor static site generation (SSG) v Nuxt 3 kardinal'no izmeniłsja po sravn'eniju s versiej 2.x. Direktivy ",{"type":32,"tag":40,"props":41,"children":43},"code",{"className":42},[],[44],{"type":37,"value":45},"routeRules",{"type":37,"value":47},", ",{"type":32,"tag":40,"props":49,"children":51},{"className":50},[],[52],{"type":37,"value":23},{"type":37,"value":54}," i mehanizm payload extraction, prisheddshie s Nitro engine, pryamo vliyayut na vremya sborki i produktivnost' v runtime. Strategii, kotoroye pomogли sokrasctit' vremya sborki s 40 sekund do 8 sekund na sajtе s 10 000 stranits e-kommerc'i, a takzhe analiz tradoff'ov i rezultaty izmrenil predstavlyayem ниже.",{"type":32,"tag":56,"props":57,"children":59},"h2",{"id":58},"matrica-vybora-strategij-prerendera",[60],{"type":37,"value":61},"Matrica Vybora Strategij Prerender'a",{"type":32,"tag":33,"props":63,"children":64},{},[65],{"type":37,"value":66},"V Nuxt 3 suščestvuyut 4 osnovnyh strategii prerender'a: polnoe static rendering, chastichnyj prerender, ISR hybrid i generacija po zaprosu. Kazhdaya iz nih imeet razlichnyje vremya sborki, runtime zatraty i koeffic'ient popadan'iya v cache.",{"type":32,"tag":33,"props":68,"children":69},{},[70,72,78],{"type":37,"value":71},"Full static (",{"type":32,"tag":40,"props":73,"children":75},{"className":74},[],[76],{"type":37,"value":77},"nitro.prerender.routes",{"type":37,"value":79},"): renderit vse marshruty v vremya sborki i eksportirует ikh v vide HTML. Ideal'no dlya sajtov s 100 stranitsami, dlya 10 000 strani vremя sborki mozhet prevysit' 5 minut. Preimushčestvo: otsutstv'ie runtime, 100% popadan'iya v cache CDN. Nedostatok: kazhdoe izmenenie kontenta trebuet polnoe perestroenie. Dlya e-kommerc'i, gde katalog obnovlyaetsya 50 raz v den', eto neudachimo.",{"type":32,"tag":33,"props":81,"children":82},{},[83,85,90],{"type":37,"value":84},"Chastichnyj prerender (",{"type":32,"tag":40,"props":86,"children":88},{"className":87},[],[89],{"type":37,"value":45},{"type":37,"value":91},"): kritichnyje marshruty (startovaya stranica, top 100 kategorij) prerender'uyutsya, dlinnye khvosty obrabatyvayutsya cherez ISR. Vremya sborki sokraщaetsya na 90%. Primer: na sajte s 10 000 tovarov perv'ie 500 prerenderiruyutsya, ostalnye keshируются pri pervom zaproase. Shtraف za otsutstvie v cache: 800ms (SSR), popadan'ie v cache: 40ms (statichnyj HTML).",{"type":32,"tag":33,"props":93,"children":94},{},[95,97,102,104,110],{"type":37,"value":96},"Incremental Static Regeneration (ISR): realizuetsya na platformah, analog'ichnyh Vercel\u002FNetlify, s pomosch'yu ",{"type":32,"tag":40,"props":98,"children":100},{"className":99},[],[101],{"type":37,"value":45},{"type":37,"value":103}," + ",{"type":32,"tag":40,"props":105,"children":107},{"className":106},[],[108],{"type":37,"value":109},"swr\u002Fstale",{"type":37,"value":111},". Stranica posle pervogo render'irovaniya popádaet v cache, a po истечении vremeni zhizni pervalidiruyetsya v fone. Tradoff: risk zastaryelogo kontenta protiv vyigrysha v vremeni sborki. S TTL v 24 chasa ne uspevayesh' perekhvatit' dnevnyje izmeneniya cen, no vremya sborki sokraщaetsya do 2 sekund.",{"type":32,"tag":33,"props":113,"children":114},{},[115,117,123],{"type":37,"value":116},"Po-trebovanii (",{"type":32,"tag":40,"props":118,"children":120},{"className":119},[],[121],{"type":37,"value":122},"server\u002Fapi",{"type":37,"value":124},"): tetlится webhook'ami pri izmenenijakh kontenta — tolko sootvetstvuyushchij marshrut pererender'iruyetsya nanovo. Minimal'noe vremya sborki, maksimal'naya slozhnost' orkhestrirovaniya. Nuzhno nastrojti: CMS webhook → Nitro API → pipeline invalidac'i marshrutov.",{"type":32,"tag":56,"props":126,"children":128},{"id":127},"granularnyj-kontrol-cherez-route-rules",[129],{"type":37,"value":130},"Granularnyj Kontrol cherez Route Rules",{"type":32,"tag":33,"props":132,"children":133},{},[134,136,142,144,149,151,156,157,163,164,170,171,177],{"type":37,"value":135},"V ",{"type":32,"tag":40,"props":137,"children":139},{"className":138},[],[140],{"type":37,"value":141},"nuxt.config.ts",{"type":37,"value":143}," direktiva ",{"type":32,"tag":40,"props":145,"children":147},{"className":146},[],[148],{"type":37,"value":45},{"type":37,"value":150}," opredelyaet dlya kazhdogo marshrutа razlichnuju strategiyu renderirovaniya. Na ètom sloe direktivy ",{"type":32,"tag":40,"props":152,"children":154},{"className":153},[],[155],{"type":37,"value":23},{"type":37,"value":47},{"type":32,"tag":40,"props":158,"children":160},{"className":159},[],[161],{"type":37,"value":162},"swr",{"type":37,"value":47},{"type":32,"tag":40,"props":165,"children":167},{"className":166},[],[168],{"type":37,"value":169},"isr",{"type":37,"value":47},{"type":32,"tag":40,"props":172,"children":174},{"className":173},[],[175],{"type":37,"value":176},"ssr",{"type":37,"value":178}," kontrol'iruyut povedenie cache dlya kazhdogo marshrutа.",{"type":32,"tag":180,"props":181,"children":185},"pre",{"className":182,"code":183,"language":184,"meta":16,"style":16},"language-typescript shiki shiki-themes github-dark","export default defineNuxtConfig({\n  routeRules: {\n    '\u002F': { prerender: true }, \u002F\u002F Startovaya stranica vsegda statichna\n    '\u002Fproducts\u002F**': { swr: 3600 }, \u002F\u002F Tovary keshuirutsya na 1 chas\n    '\u002Fapi\u002F**': { cors: true, cache: false }, \u002F\u002F API endpoint'y ne keshuirutsya\n    '\u002Fcategory\u002F:slug': { isr: true }, \u002F\u002F ISR aktiviruetsya\n  },\n  nitro: {\n    prerender: {\n      crawlLinks: true, \u002F\u002F Sledyuj ssylki v sitemape\n      routes: ['\u002Fsitemap.xml'], \u002F\u002F Ruchnoj poryadok marshrutov\n      ignore: ['\u002Fadmin', '\u002Fcheckout\u002F**'], \u002F\u002F Isklyuch'i iz prerender'a\n    },\n  },\n})\n","typescript",[186],{"type":32,"tag":40,"props":187,"children":188},{"__ignoreMap":16},[189,218,227,259,287,324,351,360,368,377,399,423,455,464,472],{"type":32,"tag":190,"props":191,"children":194},"span",{"class":192,"line":193},"line",1,[195,201,206,212],{"type":32,"tag":190,"props":196,"children":198},{"style":197},"--shiki-default:#F97583",[199],{"type":37,"value":200},"export",{"type":32,"tag":190,"props":202,"children":203},{"style":197},[204],{"type":37,"value":205}," default",{"type":32,"tag":190,"props":207,"children":209},{"style":208},"--shiki-default:#B392F0",[210],{"type":37,"value":211}," defineNuxtConfig",{"type":32,"tag":190,"props":213,"children":215},{"style":214},"--shiki-default:#E1E4E8",[216],{"type":37,"value":217},"({\n",{"type":32,"tag":190,"props":219,"children":221},{"class":192,"line":220},2,[222],{"type":32,"tag":190,"props":223,"children":224},{"style":214},[225],{"type":37,"value":226},"  routeRules: {\n",{"type":32,"tag":190,"props":228,"children":230},{"class":192,"line":229},3,[231,237,242,248,253],{"type":32,"tag":190,"props":232,"children":234},{"style":233},"--shiki-default:#9ECBFF",[235],{"type":37,"value":236},"    '\u002F'",{"type":32,"tag":190,"props":238,"children":239},{"style":214},[240],{"type":37,"value":241},": { prerender: ",{"type":32,"tag":190,"props":243,"children":245},{"style":244},"--shiki-default:#79B8FF",[246],{"type":37,"value":247},"true",{"type":32,"tag":190,"props":249,"children":250},{"style":214},[251],{"type":37,"value":252}," }, ",{"type":32,"tag":190,"props":254,"children":256},{"style":255},"--shiki-default:#6A737D",[257],{"type":37,"value":258},"\u002F\u002F Startovaya stranica vsegda statichna\n",{"type":32,"tag":190,"props":260,"children":262},{"class":192,"line":261},4,[263,268,273,278,282],{"type":32,"tag":190,"props":264,"children":265},{"style":233},[266],{"type":37,"value":267},"    '\u002Fproducts\u002F**'",{"type":32,"tag":190,"props":269,"children":270},{"style":214},[271],{"type":37,"value":272},": { swr: ",{"type":32,"tag":190,"props":274,"children":275},{"style":244},[276],{"type":37,"value":277},"3600",{"type":32,"tag":190,"props":279,"children":280},{"style":214},[281],{"type":37,"value":252},{"type":32,"tag":190,"props":283,"children":284},{"style":255},[285],{"type":37,"value":286},"\u002F\u002F Tovary keshuirutsya na 1 chas\n",{"type":32,"tag":190,"props":288,"children":290},{"class":192,"line":289},5,[291,296,301,305,310,315,319],{"type":32,"tag":190,"props":292,"children":293},{"style":233},[294],{"type":37,"value":295},"    '\u002Fapi\u002F**'",{"type":32,"tag":190,"props":297,"children":298},{"style":214},[299],{"type":37,"value":300},": { cors: ",{"type":32,"tag":190,"props":302,"children":303},{"style":244},[304],{"type":37,"value":247},{"type":32,"tag":190,"props":306,"children":307},{"style":214},[308],{"type":37,"value":309},", cache: ",{"type":32,"tag":190,"props":311,"children":312},{"style":244},[313],{"type":37,"value":314},"false",{"type":32,"tag":190,"props":316,"children":317},{"style":214},[318],{"type":37,"value":252},{"type":32,"tag":190,"props":320,"children":321},{"style":255},[322],{"type":37,"value":323},"\u002F\u002F API endpoint'y ne keshuirutsya\n",{"type":32,"tag":190,"props":325,"children":327},{"class":192,"line":326},6,[328,333,338,342,346],{"type":32,"tag":190,"props":329,"children":330},{"style":233},[331],{"type":37,"value":332},"    '\u002Fcategory\u002F:slug'",{"type":32,"tag":190,"props":334,"children":335},{"style":214},[336],{"type":37,"value":337},": { isr: ",{"type":32,"tag":190,"props":339,"children":340},{"style":244},[341],{"type":37,"value":247},{"type":32,"tag":190,"props":343,"children":344},{"style":214},[345],{"type":37,"value":252},{"type":32,"tag":190,"props":347,"children":348},{"style":255},[349],{"type":37,"value":350},"\u002F\u002F ISR aktiviruetsya\n",{"type":32,"tag":190,"props":352,"children":354},{"class":192,"line":353},7,[355],{"type":32,"tag":190,"props":356,"children":357},{"style":214},[358],{"type":37,"value":359},"  },\n",{"type":32,"tag":190,"props":361,"children":362},{"class":192,"line":26},[363],{"type":32,"tag":190,"props":364,"children":365},{"style":214},[366],{"type":37,"value":367},"  nitro: {\n",{"type":32,"tag":190,"props":369,"children":371},{"class":192,"line":370},9,[372],{"type":32,"tag":190,"props":373,"children":374},{"style":214},[375],{"type":37,"value":376},"    prerender: {\n",{"type":32,"tag":190,"props":378,"children":380},{"class":192,"line":379},10,[381,386,390,394],{"type":32,"tag":190,"props":382,"children":383},{"style":214},[384],{"type":37,"value":385},"      crawlLinks: ",{"type":32,"tag":190,"props":387,"children":388},{"style":244},[389],{"type":37,"value":247},{"type":32,"tag":190,"props":391,"children":392},{"style":214},[393],{"type":37,"value":47},{"type":32,"tag":190,"props":395,"children":396},{"style":255},[397],{"type":37,"value":398},"\u002F\u002F Sledyuj ssylki v sitemape\n",{"type":32,"tag":190,"props":400,"children":402},{"class":192,"line":401},11,[403,408,413,418],{"type":32,"tag":190,"props":404,"children":405},{"style":214},[406],{"type":37,"value":407},"      routes: [",{"type":32,"tag":190,"props":409,"children":410},{"style":233},[411],{"type":37,"value":412},"'\u002Fsitemap.xml'",{"type":32,"tag":190,"props":414,"children":415},{"style":214},[416],{"type":37,"value":417},"], ",{"type":32,"tag":190,"props":419,"children":420},{"style":255},[421],{"type":37,"value":422},"\u002F\u002F Ruchnoj poryadok marshrutov\n",{"type":32,"tag":190,"props":424,"children":426},{"class":192,"line":425},12,[427,432,437,441,446,450],{"type":32,"tag":190,"props":428,"children":429},{"style":214},[430],{"type":37,"value":431},"      ignore: [",{"type":32,"tag":190,"props":433,"children":434},{"style":233},[435],{"type":37,"value":436},"'\u002Fadmin'",{"type":32,"tag":190,"props":438,"children":439},{"style":214},[440],{"type":37,"value":47},{"type":32,"tag":190,"props":442,"children":443},{"style":233},[444],{"type":37,"value":445},"'\u002Fcheckout\u002F**'",{"type":32,"tag":190,"props":447,"children":448},{"style":214},[449],{"type":37,"value":417},{"type":32,"tag":190,"props":451,"children":452},{"style":255},[453],{"type":37,"value":454},"\u002F\u002F Isklyuch'i iz prerender'a\n",{"type":32,"tag":190,"props":456,"children":458},{"class":192,"line":457},13,[459],{"type":32,"tag":190,"props":460,"children":461},{"style":214},[462],{"type":37,"value":463},"    },\n",{"type":32,"tag":190,"props":465,"children":467},{"class":192,"line":466},14,[468],{"type":32,"tag":190,"props":469,"children":470},{"style":214},[471],{"type":37,"value":359},{"type":32,"tag":190,"props":473,"children":475},{"class":192,"line":474},15,[476],{"type":32,"tag":190,"props":477,"children":478},{"style":214},[479],{"type":37,"value":480},"})\n",{"type":32,"tag":33,"props":482,"children":483},{},[484,486,492,494,500],{"type":37,"value":485},"S ",{"type":32,"tag":40,"props":487,"children":489},{"className":488},[],[490],{"type":37,"value":491},"crawlLinks: true",{"type":37,"value":493}," ssylki v sitemape avtomaticheski obnaruzhivayutsya. Dlya sajta s 500 stranitsami ne nuzhen spravochnik marshrutov. No dlya sajta s 50 000 stranits crawl vsekh ssylok mozhet zanyat' 10 minut sborki — v ètom slučae ispol'zuj ruchnoj array ",{"type":32,"tag":40,"props":495,"children":497},{"className":496},[],[498],{"type":37,"value":499},"routes",{"type":37,"value":501}," + inkremental'naya strategiya.",{"type":32,"tag":503,"props":504,"children":506},"h3",{"id":505},"izbezhanie-duplika-dannyh-s-pomoshchyu-payload-extraction",[507],{"type":37,"value":508},"Izbezhanie Duplika Dannyh s Pomoshch'yu Payload Extraction",{"type":32,"tag":33,"props":510,"children":511},{},[512,514,520],{"type":37,"value":513},"Nuxt 3 dlya kazhdogo prерenderirovannogo marshrutа sozdaet ",{"type":32,"tag":40,"props":515,"children":517},{"className":516},[],[518],{"type":37,"value":519},"_payload.json",{"type":37,"value":521},". Ètot fajl seríalizuet dannyje, polučennyje pri server-sborke. Pri navigacii SPA etot JSON ispol'zuetsya, novyj API vyzov ne delaetsya.",{"type":32,"tag":180,"props":523,"children":525},{"className":182,"code":524,"language":184,"meta":16,"style":16},"\u002F\u002F pages\u002Fproduct\u002F[id].vue\n\u003Cscript setup>\nconst route = useRoute()\nconst { data: product } = await useFetch(`\u002Fapi\u002Fproducts\u002F${route.params.id}`)\n\u003C\u002Fscript>\n",[526],{"type":32,"tag":40,"props":527,"children":528},{"__ignoreMap":16},[529,537,555,583,675],{"type":32,"tag":190,"props":530,"children":531},{"class":192,"line":193},[532],{"type":32,"tag":190,"props":533,"children":534},{"style":255},[535],{"type":37,"value":536},"\u002F\u002F pages\u002Fproduct\u002F[id].vue\n",{"type":32,"tag":190,"props":538,"children":539},{"class":192,"line":220},[540,545,550],{"type":32,"tag":190,"props":541,"children":542},{"style":197},[543],{"type":37,"value":544},"\u003C",{"type":32,"tag":190,"props":546,"children":547},{"style":214},[548],{"type":37,"value":549},"script setup",{"type":32,"tag":190,"props":551,"children":552},{"style":197},[553],{"type":37,"value":554},">\n",{"type":32,"tag":190,"props":556,"children":557},{"class":192,"line":229},[558,563,568,573,578],{"type":32,"tag":190,"props":559,"children":560},{"style":197},[561],{"type":37,"value":562},"const",{"type":32,"tag":190,"props":564,"children":565},{"style":244},[566],{"type":37,"value":567}," route",{"type":32,"tag":190,"props":569,"children":570},{"style":197},[571],{"type":37,"value":572}," =",{"type":32,"tag":190,"props":574,"children":575},{"style":208},[576],{"type":37,"value":577}," useRoute",{"type":32,"tag":190,"props":579,"children":580},{"style":214},[581],{"type":37,"value":582},"()\n",{"type":32,"tag":190,"props":584,"children":585},{"class":192,"line":261},[586,590,595,601,606,611,616,621,626,631,636,641,646,651,656,660,665,670],{"type":32,"tag":190,"props":587,"children":588},{"style":197},[589],{"type":37,"value":562},{"type":32,"tag":190,"props":591,"children":592},{"style":214},[593],{"type":37,"value":594}," { ",{"type":32,"tag":190,"props":596,"children":598},{"style":597},"--shiki-default:#FFAB70",[599],{"type":37,"value":600},"data",{"type":32,"tag":190,"props":602,"children":603},{"style":214},[604],{"type":37,"value":605},": ",{"type":32,"tag":190,"props":607,"children":608},{"style":244},[609],{"type":37,"value":610},"product",{"type":32,"tag":190,"props":612,"children":613},{"style":214},[614],{"type":37,"value":615}," } ",{"type":32,"tag":190,"props":617,"children":618},{"style":197},[619],{"type":37,"value":620},"=",{"type":32,"tag":190,"props":622,"children":623},{"style":197},[624],{"type":37,"value":625}," await",{"type":32,"tag":190,"props":627,"children":628},{"style":208},[629],{"type":37,"value":630}," useFetch",{"type":32,"tag":190,"props":632,"children":633},{"style":214},[634],{"type":37,"value":635},"(",{"type":32,"tag":190,"props":637,"children":638},{"style":233},[639],{"type":37,"value":640},"`\u002Fapi\u002Fproducts\u002F${",{"type":32,"tag":190,"props":642,"children":643},{"style":214},[644],{"type":37,"value":645},"route",{"type":32,"tag":190,"props":647,"children":648},{"style":233},[649],{"type":37,"value":650},".",{"type":32,"tag":190,"props":652,"children":653},{"style":214},[654],{"type":37,"value":655},"params",{"type":32,"tag":190,"props":657,"children":658},{"style":233},[659],{"type":37,"value":650},{"type":32,"tag":190,"props":661,"children":662},{"style":214},[663],{"type":37,"value":664},"id",{"type":32,"tag":190,"props":666,"children":667},{"style":233},[668],{"type":37,"value":669},"}`",{"type":32,"tag":190,"props":671,"children":672},{"style":214},[673],{"type":37,"value":674},")\n",{"type":32,"tag":190,"props":676,"children":677},{"class":192,"line":289},[678,683,688],{"type":32,"tag":190,"props":679,"children":680},{"style":197},[681],{"type":37,"value":682},"\u003C\u002F",{"type":32,"tag":190,"props":684,"children":685},{"style":214},[686],{"type":37,"value":687},"script",{"type":32,"tag":190,"props":689,"children":690},{"style":197},[691],{"type":37,"value":554},{"type":32,"tag":33,"props":693,"children":694},{},[695,697,703,705,710,712,717],{"type":37,"value":696},"Vo vremya prerender'a zaprashivaetsya ",{"type":32,"tag":40,"props":698,"children":700},{"className":699},[],[701],{"type":37,"value":702},"\u002Fapi\u002Fproducts\u002F123",{"type":37,"value":704},", otvet vstraivaetsya v ",{"type":32,"tag":40,"props":706,"children":708},{"className":707},[],[709],{"type":37,"value":519},{"type":37,"value":711},". Pri navigacii s kliènt-storony tie zhe dannyje pereispol'zuyutsya. Tradoff: razmer payload'a. Na sajte s 10 000 tovarov, esli kazhdyj ",{"type":32,"tag":40,"props":713,"children":715},{"className":714},[],[716],{"type":37,"value":519},{"type":37,"value":718}," ravnyaetsya 5KB, itogo proizvoditsya 50MB statichnykh активов. Uchet shirinu propusknoj sposobnosti CDN.",{"type":32,"tag":33,"props":720,"children":721},{},[722,724,730],{"type":37,"value":723},"Dlya optimizac'i ètomu szhimaj payload v ",{"type":32,"tag":40,"props":725,"children":727},{"className":726},[],[728],{"type":37,"value":729},"nitro.output.publicDir",{"type":37,"value":731}," s pomoshč'yu gzip\u002Fbrotli. Nginx\u002FCloudflare delaet ètо avtomaticheski, no szhatie v vremya sborki daet sokraščenie 5KB → 1.2KB.",{"type":32,"tag":56,"props":733,"children":735},{"id":734},"produktivnost-sborki-parallelizaciya-i-strategii-cache",[736],{"type":37,"value":737},"Produktivnost' Sborki: Parallelizac'iya i Strategii Cache",{"type":32,"tag":33,"props":739,"children":740},{},[741],{"type":37,"value":742},"Pipeline sborki Nuxt 3 sostoit iz 3 étapov: webpack\u002Fvite kompily → nitro prerender → optimizac'iya aktivov. Na 10 000 marshrutov prerender stanovitsya uzkim mestom.",{"type":32,"tag":33,"props":744,"children":745},{},[746,752,754,760],{"type":32,"tag":747,"props":748,"children":749},"strong",{},[750],{"type":37,"value":751},"Parallelizac'iya:",{"type":37,"value":753}," parametr ",{"type":32,"tag":40,"props":755,"children":757},{"className":756},[],[758],{"type":37,"value":759},"prerender.concurrency",{"type":37,"value":761}," v Nitro kontrol'iruet kolichestvo odnovremeno renderiruyushchихся marshrutov. Po umolčaniyu 10. Esli RAM pozvoljaet, uveličь do 50:",{"type":32,"tag":180,"props":763,"children":765},{"className":182,"code":764,"language":184,"meta":16,"style":16},"nitro: {\n  prerender: {\n    concurrency: 50,\n  },\n}\n",[766],{"type":32,"tag":40,"props":767,"children":768},{"__ignoreMap":16},[769,782,794,816,823],{"type":32,"tag":190,"props":770,"children":771},{"class":192,"line":193},[772,777],{"type":32,"tag":190,"props":773,"children":774},{"style":208},[775],{"type":37,"value":776},"nitro",{"type":32,"tag":190,"props":778,"children":779},{"style":214},[780],{"type":37,"value":781},": {\n",{"type":32,"tag":190,"props":783,"children":784},{"class":192,"line":220},[785,790],{"type":32,"tag":190,"props":786,"children":787},{"style":208},[788],{"type":37,"value":789},"  prerender",{"type":32,"tag":190,"props":791,"children":792},{"style":214},[793],{"type":37,"value":781},{"type":32,"tag":190,"props":795,"children":796},{"class":192,"line":229},[797,802,806,811],{"type":32,"tag":190,"props":798,"children":799},{"style":208},[800],{"type":37,"value":801},"    concurrency",{"type":32,"tag":190,"props":803,"children":804},{"style":214},[805],{"type":37,"value":605},{"type":32,"tag":190,"props":807,"children":808},{"style":244},[809],{"type":37,"value":810},"50",{"type":32,"tag":190,"props":812,"children":813},{"style":214},[814],{"type":37,"value":815},",\n",{"type":32,"tag":190,"props":817,"children":818},{"class":192,"line":261},[819],{"type":32,"tag":190,"props":820,"children":821},{"style":214},[822],{"type":37,"value":359},{"type":32,"tag":190,"props":824,"children":825},{"class":192,"line":289},[826],{"type":32,"tag":190,"props":827,"children":828},{"style":214},[829],{"type":37,"value":830},"}\n",{"type":32,"tag":33,"props":832,"children":833},{},[834],{"type":37,"value":835},"Na CPU s 4 yaderami + 16GB RAM izmeneniye s 10 na 50 sokraticilo vremya sborki s 40s do 12s. No usloviya svyshe 50 daet ubyvayushchuju otdaču — overhead kontekstnyh pereklyučenij CPU vozrastает.",{"type":32,"tag":33,"props":837,"children":838},{},[839,844,846,852],{"type":32,"tag":747,"props":840,"children":841},{},[842],{"type":37,"value":843},"Inkremental'nyj kesš sborki:",{"type":37,"value":845}," Netlify\u002FVercel sokhranyayut kesš ",{"type":32,"tag":40,"props":847,"children":849},{"className":848},[],[850],{"type":37,"value":851},".nuxt\u002Fprerender",{"type":37,"value":853},". Nekeshiryemyje marshruty ne perестраivayutsya. Invalidaciya kesša na osnove Git-hešа znamenaet, čto pri kazhdoj razvertyvanii tolko izmenennyje marshruty pererender'iruyutsya.",{"type":32,"tag":180,"props":855,"children":857},{"className":182,"code":856,"language":184,"meta":16,"style":16},"\u002F\u002F netlify.toml\n[build]\n  command = \"nuxt build\"\n  publish = \".output\u002Fpublic\"\n\n[[plugins]]\n  package = \"@netlify\u002Fplugin-nextjs\"\n  \n[build.environment]\n  NUXT_TELEMETRY_DISABLED = \"1\"\n",[858],{"type":32,"tag":40,"props":859,"children":860},{"__ignoreMap":16},[861,869,877,894,911,920,928,945,953,961],{"type":32,"tag":190,"props":862,"children":863},{"class":192,"line":193},[864],{"type":32,"tag":190,"props":865,"children":866},{"style":255},[867],{"type":37,"value":868},"\u002F\u002F netlify.toml\n",{"type":32,"tag":190,"props":870,"children":871},{"class":192,"line":220},[872],{"type":32,"tag":190,"props":873,"children":874},{"style":214},[875],{"type":37,"value":876},"[build]\n",{"type":32,"tag":190,"props":878,"children":879},{"class":192,"line":229},[880,885,889],{"type":32,"tag":190,"props":881,"children":882},{"style":214},[883],{"type":37,"value":884},"  command ",{"type":32,"tag":190,"props":886,"children":887},{"style":197},[888],{"type":37,"value":620},{"type":32,"tag":190,"props":890,"children":891},{"style":233},[892],{"type":37,"value":893}," \"nuxt build\"\n",{"type":32,"tag":190,"props":895,"children":896},{"class":192,"line":261},[897,902,906],{"type":32,"tag":190,"props":898,"children":899},{"style":214},[900],{"type":37,"value":901},"  publish ",{"type":32,"tag":190,"props":903,"children":904},{"style":197},[905],{"type":37,"value":620},{"type":32,"tag":190,"props":907,"children":908},{"style":233},[909],{"type":37,"value":910}," \".output\u002Fpublic\"\n",{"type":32,"tag":190,"props":912,"children":913},{"class":192,"line":289},[914],{"type":32,"tag":190,"props":915,"children":917},{"emptyLinePlaceholder":916},true,[918],{"type":37,"value":919},"\n",{"type":32,"tag":190,"props":921,"children":922},{"class":192,"line":326},[923],{"type":32,"tag":190,"props":924,"children":925},{"style":214},[926],{"type":37,"value":927},"[[plugins]]\n",{"type":32,"tag":190,"props":929,"children":930},{"class":192,"line":353},[931,936,940],{"type":32,"tag":190,"props":932,"children":933},{"style":197},[934],{"type":37,"value":935},"  package",{"type":32,"tag":190,"props":937,"children":938},{"style":197},[939],{"type":37,"value":572},{"type":32,"tag":190,"props":941,"children":942},{"style":233},[943],{"type":37,"value":944}," \"@netlify\u002Fplugin-nextjs\"\n",{"type":32,"tag":190,"props":946,"children":947},{"class":192,"line":26},[948],{"type":32,"tag":190,"props":949,"children":950},{"style":214},[951],{"type":37,"value":952},"  \n",{"type":32,"tag":190,"props":954,"children":955},{"class":192,"line":370},[956],{"type":32,"tag":190,"props":957,"children":958},{"style":214},[959],{"type":37,"value":960},"[build.environment]\n",{"type":32,"tag":190,"props":962,"children":963},{"class":192,"line":379},[964,969,973],{"type":32,"tag":190,"props":965,"children":966},{"style":244},[967],{"type":37,"value":968},"  NUXT_TELEMETRY_DISABLED",{"type":32,"tag":190,"props":970,"children":971},{"style":197},[972],{"type":37,"value":572},{"type":32,"tag":190,"props":974,"children":975},{"style":233},[976],{"type":37,"value":977}," \"1\"\n",{"type":32,"tag":33,"props":979,"children":980},{},[981],{"type":37,"value":982},"Pri koeffic'iente popadan'iya v kesš 70% sajt s 5000 marshrutov sobirayetsya za 5s vmesto 15s.",{"type":32,"tag":503,"props":984,"children":986},{"id":985},"tradoff-razmer-bundla-vs-prerender",[987],{"type":37,"value":988},"Tradoff: Razmer Bundl'a vs Prerender",{"type":32,"tag":33,"props":990,"children":991},{},[992,994,1000],{"type":37,"value":993},"HTML-fajly, proizvedennye pri polnom prerender'e, soderzhat JS-bundle dlya gidracii. V Nuxt 3 s pomoshch'yu ",{"type":32,"tag":40,"props":995,"children":997},{"className":996},[],[998],{"type":37,"value":999},"experimental.payloadExtraction",{"type":37,"value":1001}," payload'y można otdelit' ot HTML. Ètо optimiziruet razdelenie častej.",{"type":32,"tag":180,"props":1003,"children":1005},{"className":182,"code":1004,"language":184,"meta":16,"style":16},"experimental: {\n  payloadExtraction: true,\n  inlineSSRStyles: false, \u002F\u002F Critical CSS ne vstraivaetsya inline\n}\n",[1006],{"type":32,"tag":40,"props":1007,"children":1008},{"__ignoreMap":16},[1009,1021,1041,1066],{"type":32,"tag":190,"props":1010,"children":1011},{"class":192,"line":193},[1012,1017],{"type":32,"tag":190,"props":1013,"children":1014},{"style":208},[1015],{"type":37,"value":1016},"experimental",{"type":32,"tag":190,"props":1018,"children":1019},{"style":214},[1020],{"type":37,"value":781},{"type":32,"tag":190,"props":1022,"children":1023},{"class":192,"line":220},[1024,1029,1033,1037],{"type":32,"tag":190,"props":1025,"children":1026},{"style":208},[1027],{"type":37,"value":1028},"  payloadExtraction",{"type":32,"tag":190,"props":1030,"children":1031},{"style":214},[1032],{"type":37,"value":605},{"type":32,"tag":190,"props":1034,"children":1035},{"style":244},[1036],{"type":37,"value":247},{"type":32,"tag":190,"props":1038,"children":1039},{"style":214},[1040],{"type":37,"value":815},{"type":32,"tag":190,"props":1042,"children":1043},{"class":192,"line":229},[1044,1049,1053,1057,1061],{"type":32,"tag":190,"props":1045,"children":1046},{"style":208},[1047],{"type":37,"value":1048},"  inlineSSRStyles",{"type":32,"tag":190,"props":1050,"children":1051},{"style":214},[1052],{"type":37,"value":605},{"type":32,"tag":190,"props":1054,"children":1055},{"style":244},[1056],{"type":37,"value":314},{"type":32,"tag":190,"props":1058,"children":1059},{"style":214},[1060],{"type":37,"value":47},{"type":32,"tag":190,"props":1062,"children":1063},{"style":255},[1064],{"type":37,"value":1065},"\u002F\u002F Critical CSS ne vstraivaetsya inline\n",{"type":32,"tag":190,"props":1067,"children":1068},{"class":192,"line":261},[1069],{"type":32,"tag":190,"props":1070,"children":1071},{"style":214},[1072],{"type":37,"value":830},{"type":32,"tag":33,"props":1074,"children":1075},{},[1076,1077,1083],{"type":37,"value":485},{"type":32,"tag":40,"props":1078,"children":1080},{"className":1079},[],[1081],{"type":37,"value":1082},"payloadExtraction: true",{"type":37,"value":1084}," 250KB HTML → 180KB HTML + 70KB JSON. Client-sторona zaprashivaet JSON, ne pereparsiruet HTML. LCP 2.1s → 1.8s (90-j percentil', mobile 3G).",{"type":32,"tag":33,"props":1086,"children":1087},{},[1088],{"type":37,"value":1089},"No tradoff: dopolnitel'nyj HTTP-zapros. Esli est' HTTP\u002F2 multiplexing, problem'a net, s HTTP\u002F1.1 latentnost' vozrastaet. Na sovremennyh CDN (Cloudflare\u002FFastly) HTTP\u002F2 — default, poètomu ètа strategiya vyigryvaet.",{"type":32,"tag":56,"props":1091,"children":1093},{"id":1092},"integraciya-headless-commerce-shopify-nuxt-ssg",[1094],{"type":37,"value":1095},"Integrac'iya Headless Commerce: Shopify + Nuxt SSG",{"type":32,"tag":33,"props":1097,"children":1098},{},[1099],{"type":37,"value":1100},"V e-kommerc'i prerender tovarnyh stranits vniest' kompleksnost' v sinhron'izaciyu inventarya. S pomoshč'yu Shopify GraphQL Storefront API nastrajesh webhook-drivennyj revalidac'iu.",{"type":32,"tag":180,"props":1102,"children":1104},{"className":182,"code":1103,"language":184,"meta":16,"style":16},"\u002F\u002F server\u002Fapi\u002Frevalidate.post.ts\nexport default defineEventHandler(async (event) => {\n  const body = await readBody(event)\n  \n  if (body.topic === 'products\u002Fupdate') {\n    const productId = body.id\n    await nitroApp.hooks.callHook('prerender:routes', [\n      `\u002Fproducts\u002F${productId}`\n    ])\n  }\n  \n  return { status: 'revalidated' }\n})\n",[1105],{"type":32,"tag":40,"props":1106,"children":1107},{"__ignoreMap":16},[1108,1116,1166,1197,1204,1232,1254,1286,1304,1312,1320,1327,1350],{"type":32,"tag":190,"props":1109,"children":1110},{"class":192,"line":193},[1111],{"type":32,"tag":190,"props":1112,"children":1113},{"style":255},[1114],{"type":37,"value":1115},"\u002F\u002F server\u002Fapi\u002Frevalidate.post.ts\n",{"type":32,"tag":190,"props":1117,"children":1118},{"class":192,"line":220},[1119,1123,1127,1132,1136,1141,1146,1151,1156,1161],{"type":32,"tag":190,"props":1120,"children":1121},{"style":197},[1122],{"type":37,"value":200},{"type":32,"tag":190,"props":1124,"children":1125},{"style":197},[1126],{"type":37,"value":205},{"type":32,"tag":190,"props":1128,"children":1129},{"style":208},[1130],{"type":37,"value":1131}," defineEventHandler",{"type":32,"tag":190,"props":1133,"children":1134},{"style":214},[1135],{"type":37,"value":635},{"type":32,"tag":190,"props":1137,"children":1138},{"style":197},[1139],{"type":37,"value":1140},"async",{"type":32,"tag":190,"props":1142,"children":1143},{"style":214},[1144],{"type":37,"value":1145}," (",{"type":32,"tag":190,"props":1147,"children":1148},{"style":597},[1149],{"type":37,"value":1150},"event",{"type":32,"tag":190,"props":1152,"children":1153},{"style":214},[1154],{"type":37,"value":1155},") ",{"type":32,"tag":190,"props":1157,"children":1158},{"style":197},[1159],{"type":37,"value":1160},"=>",{"type":32,"tag":190,"props":1162,"children":1163},{"style":214},[1164],{"type":37,"value":1165}," {\n",{"type":32,"tag":190,"props":1167,"children":1168},{"class":192,"line":229},[1169,1174,1179,1183,1187,1192],{"type":32,"tag":190,"props":1170,"children":1171},{"style":197},[1172],{"type":37,"value":1173},"  const",{"type":32,"tag":190,"props":1175,"children":1176},{"style":244},[1177],{"type":37,"value":1178}," body",{"type":32,"tag":190,"props":1180,"children":1181},{"style":197},[1182],{"type":37,"value":572},{"type":32,"tag":190,"props":1184,"children":1185},{"style":197},[1186],{"type":37,"value":625},{"type":32,"tag":190,"props":1188,"children":1189},{"style":208},[1190],{"type":37,"value":1191}," readBody",{"type":32,"tag":190,"props":1193,"children":1194},{"style":214},[1195],{"type":37,"value":1196},"(event)\n",{"type":32,"tag":190,"props":1198,"children":1199},{"class":192,"line":261},[1200],{"type":32,"tag":190,"props":1201,"children":1202},{"style":214},[1203],{"type":37,"value":952},{"type":32,"tag":190,"props":1205,"children":1206},{"class":192,"line":289},[1207,1212,1217,1222,1227],{"type":32,"tag":190,"props":1208,"children":1209},{"style":197},[1210],{"type":37,"value":1211},"  if",{"type":32,"tag":190,"props":1213,"children":1214},{"style":214},[1215],{"type":37,"value":1216}," (body.topic ",{"type":32,"tag":190,"props":1218,"children":1219},{"style":197},[1220],{"type":37,"value":1221},"===",{"type":32,"tag":190,"props":1223,"children":1224},{"style":233},[1225],{"type":37,"value":1226}," 'products\u002Fupdate'",{"type":32,"tag":190,"props":1228,"children":1229},{"style":214},[1230],{"type":37,"value":1231},") {\n",{"type":32,"tag":190,"props":1233,"children":1234},{"class":192,"line":326},[1235,1240,1245,1249],{"type":32,"tag":190,"props":1236,"children":1237},{"style":197},[1238],{"type":37,"value":1239},"    const",{"type":32,"tag":190,"props":1241,"children":1242},{"style":244},[1243],{"type":37,"value":1244}," productId",{"type":32,"tag":190,"props":1246,"children":1247},{"style":197},[1248],{"type":37,"value":572},{"type":32,"tag":190,"props":1250,"children":1251},{"style":214},[1252],{"type":37,"value":1253}," body.id\n",{"type":32,"tag":190,"props":1255,"children":1256},{"class":192,"line":353},[1257,1262,1267,1272,1276,1281],{"type":32,"tag":190,"props":1258,"children":1259},{"style":197},[1260],{"type":37,"value":1261},"    await",{"type":32,"tag":190,"props":1263,"children":1264},{"style":214},[1265],{"type":37,"value":1266}," nitroApp.hooks.",{"type":32,"tag":190,"props":1268,"children":1269},{"style":208},[1270],{"type":37,"value":1271},"callHook",{"type":32,"tag":190,"props":1273,"children":1274},{"style":214},[1275],{"type":37,"value":635},{"type":32,"tag":190,"props":1277,"children":1278},{"style":233},[1279],{"type":37,"value":1280},"'prerender:routes'",{"type":32,"tag":190,"props":1282,"children":1283},{"style":214},[1284],{"type":37,"value":1285},", [\n",{"type":32,"tag":190,"props":1287,"children":1288},{"class":192,"line":26},[1289,1294,1299],{"type":32,"tag":190,"props":1290,"children":1291},{"style":233},[1292],{"type":37,"value":1293},"      `\u002Fproducts\u002F${",{"type":32,"tag":190,"props":1295,"children":1296},{"style":214},[1297],{"type":37,"value":1298},"productId",{"type":32,"tag":190,"props":1300,"children":1301},{"style":233},[1302],{"type":37,"value":1303},"}`\n",{"type":32,"tag":190,"props":1305,"children":1306},{"class":192,"line":370},[1307],{"type":32,"tag":190,"props":1308,"children":1309},{"style":214},[1310],{"type":37,"value":1311},"    ])\n",{"type":32,"tag":190,"props":1313,"children":1314},{"class":192,"line":379},[1315],{"type":32,"tag":190,"props":1316,"children":1317},{"style":214},[1318],{"type":37,"value":1319},"  }\n",{"type":32,"tag":190,"props":1321,"children":1322},{"class":192,"line":401},[1323],{"type":32,"tag":190,"props":1324,"children":1325},{"style":214},[1326],{"type":37,"value":952},{"type":32,"tag":190,"props":1328,"children":1329},{"class":192,"line":425},[1330,1335,1340,1345],{"type":32,"tag":190,"props":1331,"children":1332},{"style":197},[1333],{"type":37,"value":1334},"  return",{"type":32,"tag":190,"props":1336,"children":1337},{"style":214},[1338],{"type":37,"value":1339}," { status: ",{"type":32,"tag":190,"props":1341,"children":1342},{"style":233},[1343],{"type":37,"value":1344},"'revalidated'",{"type":32,"tag":190,"props":1346,"children":1347},{"style":214},[1348],{"type":37,"value":1349}," }\n",{"type":32,"tag":190,"props":1351,"children":1352},{"class":192,"line":457},[1353],{"type":32,"tag":190,"props":1354,"children":1355},{"style":214},[1356],{"type":37,"value":480},{"type":32,"tag":33,"props":1358,"children":1359},{},[1360,1362,1368],{"type":37,"value":1361},"Podpishis' na webhook ot Shopify Admin API → pri obnovlenii tovara ",{"type":32,"tag":40,"props":1363,"children":1365},{"className":1364},[],[1366],{"type":37,"value":1367},"\u002Fapi\u002Frevalidate",{"type":37,"value":1369}," aktiviruetsya → tolko tot marshrut pererender'iruyetsya. Vmesto perestroeni vsego kataloga pererenderirovaniye odnoj stranicy trebuet 200ms.",{"type":32,"tag":33,"props":1371,"children":1372},{},[1373,1382],{"type":32,"tag":1374,"props":1375,"children":1379},"a",{"href":1376,"rel":1377},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Fheadless",[1378],"nofollow",[1380],{"type":37,"value":1381},"Headless",{"type":37,"value":1383}," arhitektura e-kommerc'i dlyya ètogo pattern'a kritichna. V monolitnykh platformah polnaya perestrojka neobhodima, v headless'e granuljarnyj invalidation vozmozhen. Pri 50 000 SKU i 500 obnovleniyah tovarov v den' polnaya perestrojka zajmет 6 časov, inkremental'naya revalidac'iya — 2 minuty.",{"type":32,"tag":56,"props":1385,"children":1387},{"id":1386},"isr-edge-caching-hybrid-strategiya-s-cloudflare-workers",[1388],{"type":37,"value":1389},"ISR + Edge Caching: Hybrid Strategiya s Cloudflare Workers",{"type":32,"tag":33,"props":1391,"children":1392},{},[1393],{"type":37,"value":1394},"V kombinacii Nuxt 3 + Cloudflare Pages ISR realizuyetsya cherez Cloudflare Workers KV. Marshrut pri pervom zaproase renderiruyetsya, zapisyvaetsya v KV, sleduyushchie zaprosy podаiutsya iz KV.",{"type":32,"tag":180,"props":1396,"children":1398},{"className":182,"code":1397,"language":184,"meta":16,"style":16},"\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  nitro: {\n    preset: 'cloudflare-pages',\n  },\n  routeRules: {\n    '\u002Fblog\u002F**': { isr: 3600 }, \u002F\u002F 1 chas TTL\n  },\n})\n",[1399],{"type":32,"tag":40,"props":1400,"children":1401},{"__ignoreMap":16},[1402,1410,1429,1436,1453,1460,1467,1492,1499],{"type":32,"tag":190,"props":1403,"children":1404},{"class":192,"line":193},[1405],{"type":32,"tag":190,"props":1406,"children":1407},{"style":255},[1408],{"type":37,"value":1409},"\u002F\u002F nuxt.config.ts\n",{"type":32,"tag":190,"props":1411,"children":1412},{"class":192,"line":220},[1413,1417,1421,1425],{"type":32,"tag":190,"props":1414,"children":1415},{"style":197},[1416],{"type":37,"value":200},{"type":32,"tag":190,"props":1418,"children":1419},{"style":197},[1420],{"type":37,"value":205},{"type":32,"tag":190,"props":1422,"children":1423},{"style":208},[1424],{"type":37,"value":211},{"type":32,"tag":190,"props":1426,"children":1427},{"style":214},[1428],{"type":37,"value":217},{"type":32,"tag":190,"props":1430,"children":1431},{"class":192,"line":229},[1432],{"type":32,"tag":190,"props":1433,"children":1434},{"style":214},[1435],{"type":37,"value":367},{"type":32,"tag":190,"props":1437,"children":1438},{"class":192,"line":261},[1439,1444,1449],{"type":32,"tag":190,"props":1440,"children":1441},{"style":214},[1442],{"type":37,"value":1443},"    preset: ",{"type":32,"tag":190,"props":1445,"children":1446},{"style":233},[1447],{"type":37,"value":1448},"'cloudflare-pages'",{"type":32,"tag":190,"props":1450,"children":1451},{"style":214},[1452],{"type":37,"value":815},{"type":32,"tag":190,"props":1454,"children":1455},{"class":192,"line":289},[1456],{"type":32,"tag":190,"props":1457,"children":1458},{"style":214},[1459],{"type":37,"value":359},{"type":32,"tag":190,"props":1461,"children":1462},{"class":192,"line":326},[1463],{"type":32,"tag":190,"props":1464,"children":1465},{"style":214},[1466],{"type":37,"value":226},{"type":32,"tag":190,"props":1468,"children":1469},{"class":192,"line":353},[1470,1475,1479,1483,1487],{"type":32,"tag":190,"props":1471,"children":1472},{"style":233},[1473],{"type":37,"value":1474},"    '\u002Fblog\u002F**'",{"type":32,"tag":190,"props":1476,"children":1477},{"style":214},[1478],{"type":37,"value":337},{"type":32,"tag":190,"props":1480,"children":1481},{"style":244},[1482],{"type":37,"value":277},{"type":32,"tag":190,"props":1484,"children":1485},{"style":214},[1486],{"type":37,"value":252},{"type":32,"tag":190,"props":1488,"children":1489},{"style":255},[1490],{"type":37,"value":1491},"\u002F\u002F 1 chas TTL\n",{"type":32,"tag":190,"props":1493,"children":1494},{"class":192,"line":26},[1495],{"type":32,"tag":190,"props":1496,"children":1497},{"style":214},[1498],{"type":37,"value":359},{"type":32,"tag":190,"props":1500,"children":1501},{"class":192,"line":370},[1502],{"type":32,"tag":190,"props":1503,"children":1504},{"style":214},[1505],{"type":37,"value":480},{"type":32,"tag":33,"props":1507,"children":1508},{},[1509],{"type":37,"value":1510},"Latentnost' Cloudflare KV — ~50ms (global edge). Pervyj render 800ms + 50ms zapisj v KV, sleduyushchie zaprosy — 50ms. Pri koeffic'iente popadan'ya v cache 95% srednyy vremya otveta: 95×50ms + 5×850ms = 90ms. Pri polnom SSR vremya bylo by 800ms.",{"type":32,"tag":33,"props":1512,"children":1513},{},[1514],{"type":37,"value":1515},"Tradoff: stoimost' zapisi v KV. Pri 1M zaproov v mesyac — $0.50 (Cloudflare pricing 2026). Esli static hosting besplatnyj, ISR vnosit dopolnitel'nye raskhody, no UX vyigrysh eto opravdyvaet.",{"type":32,"tag":1517,"props":1518,"children":1519},"hr",{},[],{"type":32,"tag":33,"props":1521,"children":1522},{},[1523],{"type":37,"value":1524},"Strategiya SSG v Nuxt 3 trebuet reshenia v treugol'nike «svezhest' dannyh — vremya sborki — produktivnost' runtime». Prerender startovoj stranicy, ISR dlya dlinnogo khvosta, server-sborka dlya kritichnyh putej — ètot mix' nuzhen dlya kazhdogo proekta. Bez izmerenij utverzhdenie \"polnyj static bystree\" budet nepravil'no; pri 10 000 marshrutov vremya sborki mozhet povredit' UX. Inkremental'naya regenerac'iya + edge cache daet vyigrysh v oboih — vremya sborki i vremya otclika — no trebuet prinyatiya orchestration kompleksnosti.",{"type":32,"tag":1526,"props":1527,"children":1528},"style",{},[1529],{"type":37,"value":1530},"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":16,"searchDepth":229,"depth":229,"links":1532},[1533,1534,1537,1540,1541],{"id":58,"depth":220,"text":61},{"id":127,"depth":220,"text":130,"children":1535},[1536],{"id":505,"depth":229,"text":508},{"id":734,"depth":220,"text":737,"children":1538},[1539],{"id":985,"depth":229,"text":988},{"id":1092,"depth":220,"text":1095},{"id":1386,"depth":220,"text":1389},"markdown","content:ru:tech:ssg-strategii-dlya-nuxt-3.md","content","ru\u002Ftech\u002Fssg-strategii-dlya-nuxt-3.md","ru\u002Ftech\u002Fssg-strategii-dlya-nuxt-3","md",1780898617107]