[{"data":1,"prerenderedAt":1543},["ShallowReactive",2],{"article-alternates":3,"article-\u002Ftr\u002Ftech\u002Fnuxt-3-ssg-prerender-stratejileri-ve-build-optimizasyonu":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":12,"_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":1537,"_id":1538,"_source":1539,"_file":1540,"_stem":1541,"_extension":1542},"tech",false,"","Nuxt 3 SSG: Prerender Stratejileri ve Build Optimizasyonu","Nuxt 3'te static site generation ile route rules, payload extraction ve incremental regeneration stratejileri. 40 saniye build'i 8 saniyeye düşürmek.","2026-05-21",[21,22,23,24,25],"nuxt-3","ssg","prerender","build-optimization","vue",8,"Roibase",{"type":29,"children":30,"toc":1526},"root",[31,55,62,67,80,92,112,125,131,177,479,498,505,518,688,715,728,734,739,758,827,832,850,974,979,985,998,1069,1080,1085,1091,1096,1352,1365,1379,1385,1390,1501,1506,1511,1515,1520],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36,39,46,48,53],{"type":37,"value":38},"text","Nuxt 3'ün static site generation (SSG) motoru 2.x'e göre kökten değişti. Nitro engine ile gelen ",{"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}," direktifleri ve payload extraction mekanizmaları build sürelerini ve runtime performansını doğrudan etkiliyor. 10.000 sayfalık e-ticaret sitesinde 40 saniyelik build süresini 8 saniyeye düşürdüğümüz stratejileri, tradeoff'ları ve ölçümlerle paylaşıyoruz.",{"type":32,"tag":56,"props":57,"children":59},"h2",{"id":58},"prerender-stratejilerinin-seçim-matrisi",[60],{"type":37,"value":61},"Prerender Stratejilerinin Seçim Matrisi",{"type":32,"tag":33,"props":63,"children":64},{},[65],{"type":37,"value":66},"Nuxt 3'te 4 ana prerender stratejisi var: full static, partial prerender, ISR hybrid ve on-demand generation. Her birinin build time, runtime cost ve cache hit rate'i farklı.",{"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},"): Tüm route'ları build time'da render edip HTML olarak export eder. 100 sayfalık site için ideal, 10.000 sayfa için build 5 dakikayı geçebilir. Artı: runtime yok, CDN cache hit %100. Eksi: her içerik değişikliğinde full rebuild. Ürün kataloğu günde 50 kez güncellenen e-ticarette sürdürülemez.",{"type":32,"tag":33,"props":81,"children":82},{},[83,85,90],{"type":37,"value":84},"Partial prerender (",{"type":32,"tag":40,"props":86,"children":88},{"className":87},[],[89],{"type":37,"value":45},{"type":37,"value":91}," ile): Kritik route'ları (homepage, top 100 kategori) prerender, long tail'i ISR ile handle edersin. Build time 90% düşer. Örnek: 10.000 ürünlü sitede ilk 500'ü prerender, kalanı first request'te cache. Cache miss penalty: 800ms (SSR), cache hit: 40ms (static HTML).",{"type":32,"tag":33,"props":93,"children":94},{},[95,97,102,104,110],{"type":37,"value":96},"Incremental Static Regeneration (ISR): Vercel\u002FNetlify benzeri platformlarda ",{"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}," ile olur. Sayfa ilk render'dan sonra cache'e girer, TTL bitince arka planda revalidate. Trade-off: stale content riski vs build süresi kazancı. 24 saatlik TTL ile günlük fiyat değişikliklerini yakalayamazsın ama build 2 saniyeye düşer.",{"type":32,"tag":33,"props":113,"children":114},{},[115,117,123],{"type":37,"value":116},"On-demand (",{"type":32,"tag":40,"props":118,"children":120},{"className":119},[],[121],{"type":37,"value":122},"server\u002Fapi",{"type":37,"value":124}," ile tetiklenen): Webhook ile içerik değişince sadece ilgili route'u yeniden render et. En düşük build time, en yüksek orchestration complexity. CMS webhook → Nitro API → route invalidation pipeline kurmalısın.",{"type":32,"tag":56,"props":126,"children":128},{"id":127},"route-rules-ile-granüler-kontrol",[129],{"type":37,"value":130},"Route Rules ile Granüler Kontrol",{"type":32,"tag":33,"props":132,"children":133},{},[134,140,142,147,149,154,155,161,162,168,169,175],{"type":32,"tag":40,"props":135,"children":137},{"className":136},[],[138],{"type":37,"value":139},"nuxt.config.ts",{"type":37,"value":141},"'deki ",{"type":32,"tag":40,"props":143,"children":145},{"className":144},[],[146],{"type":37,"value":45},{"type":37,"value":148}," her route için farklı rendering stratejisi tanımlar. Bu katmanda ",{"type":32,"tag":40,"props":150,"children":152},{"className":151},[],[153],{"type":37,"value":23},{"type":37,"value":47},{"type":32,"tag":40,"props":156,"children":158},{"className":157},[],[159],{"type":37,"value":160},"swr",{"type":37,"value":47},{"type":32,"tag":40,"props":163,"children":165},{"className":164},[],[166],{"type":37,"value":167},"isr",{"type":37,"value":47},{"type":32,"tag":40,"props":170,"children":172},{"className":171},[],[173],{"type":37,"value":174},"ssr",{"type":37,"value":176}," gibi direktifler per-route cache behavior'ı kontrol eder.",{"type":32,"tag":178,"props":179,"children":183},"pre",{"className":180,"code":181,"language":182,"meta":16,"style":16},"language-typescript shiki shiki-themes github-dark","export default defineNuxtConfig({\n  routeRules: {\n    '\u002F': { prerender: true }, \u002F\u002F Homepage her zaman static\n    '\u002Fproducts\u002F**': { swr: 3600 }, \u002F\u002F Ürünler 1 saat cache\n    '\u002Fapi\u002F**': { cors: true, cache: false }, \u002F\u002F API endpoint'leri cache'lenmez\n    '\u002Fcategory\u002F:slug': { isr: true }, \u002F\u002F ISR aktif\n  },\n  nitro: {\n    prerender: {\n      crawlLinks: true, \u002F\u002F Sitemap link'lerini takip et\n      routes: ['\u002Fsitemap.xml'], \u002F\u002F Manuel route tanımı\n      ignore: ['\u002Fadmin', '\u002Fcheckout\u002F**'], \u002F\u002F Prerender'dan hariç\n    },\n  },\n})\n","typescript",[184],{"type":32,"tag":40,"props":185,"children":186},{"__ignoreMap":16},[187,216,225,257,285,322,349,358,366,375,397,421,453,462,470],{"type":32,"tag":188,"props":189,"children":192},"span",{"class":190,"line":191},"line",1,[193,199,204,210],{"type":32,"tag":188,"props":194,"children":196},{"style":195},"--shiki-default:#F97583",[197],{"type":37,"value":198},"export",{"type":32,"tag":188,"props":200,"children":201},{"style":195},[202],{"type":37,"value":203}," default",{"type":32,"tag":188,"props":205,"children":207},{"style":206},"--shiki-default:#B392F0",[208],{"type":37,"value":209}," defineNuxtConfig",{"type":32,"tag":188,"props":211,"children":213},{"style":212},"--shiki-default:#E1E4E8",[214],{"type":37,"value":215},"({\n",{"type":32,"tag":188,"props":217,"children":219},{"class":190,"line":218},2,[220],{"type":32,"tag":188,"props":221,"children":222},{"style":212},[223],{"type":37,"value":224},"  routeRules: {\n",{"type":32,"tag":188,"props":226,"children":228},{"class":190,"line":227},3,[229,235,240,246,251],{"type":32,"tag":188,"props":230,"children":232},{"style":231},"--shiki-default:#9ECBFF",[233],{"type":37,"value":234},"    '\u002F'",{"type":32,"tag":188,"props":236,"children":237},{"style":212},[238],{"type":37,"value":239},": { prerender: ",{"type":32,"tag":188,"props":241,"children":243},{"style":242},"--shiki-default:#79B8FF",[244],{"type":37,"value":245},"true",{"type":32,"tag":188,"props":247,"children":248},{"style":212},[249],{"type":37,"value":250}," }, ",{"type":32,"tag":188,"props":252,"children":254},{"style":253},"--shiki-default:#6A737D",[255],{"type":37,"value":256},"\u002F\u002F Homepage her zaman static\n",{"type":32,"tag":188,"props":258,"children":260},{"class":190,"line":259},4,[261,266,271,276,280],{"type":32,"tag":188,"props":262,"children":263},{"style":231},[264],{"type":37,"value":265},"    '\u002Fproducts\u002F**'",{"type":32,"tag":188,"props":267,"children":268},{"style":212},[269],{"type":37,"value":270},": { swr: ",{"type":32,"tag":188,"props":272,"children":273},{"style":242},[274],{"type":37,"value":275},"3600",{"type":32,"tag":188,"props":277,"children":278},{"style":212},[279],{"type":37,"value":250},{"type":32,"tag":188,"props":281,"children":282},{"style":253},[283],{"type":37,"value":284},"\u002F\u002F Ürünler 1 saat cache\n",{"type":32,"tag":188,"props":286,"children":288},{"class":190,"line":287},5,[289,294,299,303,308,313,317],{"type":32,"tag":188,"props":290,"children":291},{"style":231},[292],{"type":37,"value":293},"    '\u002Fapi\u002F**'",{"type":32,"tag":188,"props":295,"children":296},{"style":212},[297],{"type":37,"value":298},": { cors: ",{"type":32,"tag":188,"props":300,"children":301},{"style":242},[302],{"type":37,"value":245},{"type":32,"tag":188,"props":304,"children":305},{"style":212},[306],{"type":37,"value":307},", cache: ",{"type":32,"tag":188,"props":309,"children":310},{"style":242},[311],{"type":37,"value":312},"false",{"type":32,"tag":188,"props":314,"children":315},{"style":212},[316],{"type":37,"value":250},{"type":32,"tag":188,"props":318,"children":319},{"style":253},[320],{"type":37,"value":321},"\u002F\u002F API endpoint'leri cache'lenmez\n",{"type":32,"tag":188,"props":323,"children":325},{"class":190,"line":324},6,[326,331,336,340,344],{"type":32,"tag":188,"props":327,"children":328},{"style":231},[329],{"type":37,"value":330},"    '\u002Fcategory\u002F:slug'",{"type":32,"tag":188,"props":332,"children":333},{"style":212},[334],{"type":37,"value":335},": { isr: ",{"type":32,"tag":188,"props":337,"children":338},{"style":242},[339],{"type":37,"value":245},{"type":32,"tag":188,"props":341,"children":342},{"style":212},[343],{"type":37,"value":250},{"type":32,"tag":188,"props":345,"children":346},{"style":253},[347],{"type":37,"value":348},"\u002F\u002F ISR aktif\n",{"type":32,"tag":188,"props":350,"children":352},{"class":190,"line":351},7,[353],{"type":32,"tag":188,"props":354,"children":355},{"style":212},[356],{"type":37,"value":357},"  },\n",{"type":32,"tag":188,"props":359,"children":360},{"class":190,"line":26},[361],{"type":32,"tag":188,"props":362,"children":363},{"style":212},[364],{"type":37,"value":365},"  nitro: {\n",{"type":32,"tag":188,"props":367,"children":369},{"class":190,"line":368},9,[370],{"type":32,"tag":188,"props":371,"children":372},{"style":212},[373],{"type":37,"value":374},"    prerender: {\n",{"type":32,"tag":188,"props":376,"children":378},{"class":190,"line":377},10,[379,384,388,392],{"type":32,"tag":188,"props":380,"children":381},{"style":212},[382],{"type":37,"value":383},"      crawlLinks: ",{"type":32,"tag":188,"props":385,"children":386},{"style":242},[387],{"type":37,"value":245},{"type":32,"tag":188,"props":389,"children":390},{"style":212},[391],{"type":37,"value":47},{"type":32,"tag":188,"props":393,"children":394},{"style":253},[395],{"type":37,"value":396},"\u002F\u002F Sitemap link'lerini takip et\n",{"type":32,"tag":188,"props":398,"children":400},{"class":190,"line":399},11,[401,406,411,416],{"type":32,"tag":188,"props":402,"children":403},{"style":212},[404],{"type":37,"value":405},"      routes: [",{"type":32,"tag":188,"props":407,"children":408},{"style":231},[409],{"type":37,"value":410},"'\u002Fsitemap.xml'",{"type":32,"tag":188,"props":412,"children":413},{"style":212},[414],{"type":37,"value":415},"], ",{"type":32,"tag":188,"props":417,"children":418},{"style":253},[419],{"type":37,"value":420},"\u002F\u002F Manuel route tanımı\n",{"type":32,"tag":188,"props":422,"children":424},{"class":190,"line":423},12,[425,430,435,439,444,448],{"type":32,"tag":188,"props":426,"children":427},{"style":212},[428],{"type":37,"value":429},"      ignore: [",{"type":32,"tag":188,"props":431,"children":432},{"style":231},[433],{"type":37,"value":434},"'\u002Fadmin'",{"type":32,"tag":188,"props":436,"children":437},{"style":212},[438],{"type":37,"value":47},{"type":32,"tag":188,"props":440,"children":441},{"style":231},[442],{"type":37,"value":443},"'\u002Fcheckout\u002F**'",{"type":32,"tag":188,"props":445,"children":446},{"style":212},[447],{"type":37,"value":415},{"type":32,"tag":188,"props":449,"children":450},{"style":253},[451],{"type":37,"value":452},"\u002F\u002F Prerender'dan hariç\n",{"type":32,"tag":188,"props":454,"children":456},{"class":190,"line":455},13,[457],{"type":32,"tag":188,"props":458,"children":459},{"style":212},[460],{"type":37,"value":461},"    },\n",{"type":32,"tag":188,"props":463,"children":465},{"class":190,"line":464},14,[466],{"type":32,"tag":188,"props":467,"children":468},{"style":212},[469],{"type":37,"value":357},{"type":32,"tag":188,"props":471,"children":473},{"class":190,"line":472},15,[474],{"type":32,"tag":188,"props":475,"children":476},{"style":212},[477],{"type":37,"value":478},"})\n",{"type":32,"tag":33,"props":480,"children":481},{},[482,488,490,496],{"type":32,"tag":40,"props":483,"children":485},{"className":484},[],[486],{"type":37,"value":487},"crawlLinks: true",{"type":37,"value":489}," ile sitemap'teki link'leri otomatik keşfeder. 500 sayfalık sitede manuel route listesi tutmana gerek kalmaz. Ama 50.000 sayfalık sitede tüm link'leri crawl etmek 10 dakika build süresine mal olur — o zaman manuel ",{"type":32,"tag":40,"props":491,"children":493},{"className":492},[],[494],{"type":37,"value":495},"routes",{"type":37,"value":497}," array + incremental strategy kullan.",{"type":32,"tag":499,"props":500,"children":502},"h3",{"id":501},"payload-extraction-ile-data-duplicationı-önlemek",[503],{"type":37,"value":504},"Payload Extraction ile Data Duplication'ı Önlemek",{"type":32,"tag":33,"props":506,"children":507},{},[508,510,516],{"type":37,"value":509},"Nuxt 3 her prerender edilen route için ",{"type":32,"tag":40,"props":511,"children":513},{"className":512},[],[514],{"type":37,"value":515},"_payload.json",{"type":37,"value":517}," üretir. Bu dosya server-side fetch edilen datayı serialize eder. SPA navigation'da bu JSON'ı kullanır, yeniden API call yapmaz.",{"type":32,"tag":178,"props":519,"children":521},{"className":180,"code":520,"language":182,"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",[522],{"type":32,"tag":40,"props":523,"children":524},{"__ignoreMap":16},[525,533,551,579,671],{"type":32,"tag":188,"props":526,"children":527},{"class":190,"line":191},[528],{"type":32,"tag":188,"props":529,"children":530},{"style":253},[531],{"type":37,"value":532},"\u002F\u002F pages\u002Fproduct\u002F[id].vue\n",{"type":32,"tag":188,"props":534,"children":535},{"class":190,"line":218},[536,541,546],{"type":32,"tag":188,"props":537,"children":538},{"style":195},[539],{"type":37,"value":540},"\u003C",{"type":32,"tag":188,"props":542,"children":543},{"style":212},[544],{"type":37,"value":545},"script setup",{"type":32,"tag":188,"props":547,"children":548},{"style":195},[549],{"type":37,"value":550},">\n",{"type":32,"tag":188,"props":552,"children":553},{"class":190,"line":227},[554,559,564,569,574],{"type":32,"tag":188,"props":555,"children":556},{"style":195},[557],{"type":37,"value":558},"const",{"type":32,"tag":188,"props":560,"children":561},{"style":242},[562],{"type":37,"value":563}," route",{"type":32,"tag":188,"props":565,"children":566},{"style":195},[567],{"type":37,"value":568}," =",{"type":32,"tag":188,"props":570,"children":571},{"style":206},[572],{"type":37,"value":573}," useRoute",{"type":32,"tag":188,"props":575,"children":576},{"style":212},[577],{"type":37,"value":578},"()\n",{"type":32,"tag":188,"props":580,"children":581},{"class":190,"line":259},[582,586,591,597,602,607,612,617,622,627,632,637,642,647,652,656,661,666],{"type":32,"tag":188,"props":583,"children":584},{"style":195},[585],{"type":37,"value":558},{"type":32,"tag":188,"props":587,"children":588},{"style":212},[589],{"type":37,"value":590}," { ",{"type":32,"tag":188,"props":592,"children":594},{"style":593},"--shiki-default:#FFAB70",[595],{"type":37,"value":596},"data",{"type":32,"tag":188,"props":598,"children":599},{"style":212},[600],{"type":37,"value":601},": ",{"type":32,"tag":188,"props":603,"children":604},{"style":242},[605],{"type":37,"value":606},"product",{"type":32,"tag":188,"props":608,"children":609},{"style":212},[610],{"type":37,"value":611}," } ",{"type":32,"tag":188,"props":613,"children":614},{"style":195},[615],{"type":37,"value":616},"=",{"type":32,"tag":188,"props":618,"children":619},{"style":195},[620],{"type":37,"value":621}," await",{"type":32,"tag":188,"props":623,"children":624},{"style":206},[625],{"type":37,"value":626}," useFetch",{"type":32,"tag":188,"props":628,"children":629},{"style":212},[630],{"type":37,"value":631},"(",{"type":32,"tag":188,"props":633,"children":634},{"style":231},[635],{"type":37,"value":636},"`\u002Fapi\u002Fproducts\u002F${",{"type":32,"tag":188,"props":638,"children":639},{"style":212},[640],{"type":37,"value":641},"route",{"type":32,"tag":188,"props":643,"children":644},{"style":231},[645],{"type":37,"value":646},".",{"type":32,"tag":188,"props":648,"children":649},{"style":212},[650],{"type":37,"value":651},"params",{"type":32,"tag":188,"props":653,"children":654},{"style":231},[655],{"type":37,"value":646},{"type":32,"tag":188,"props":657,"children":658},{"style":212},[659],{"type":37,"value":660},"id",{"type":32,"tag":188,"props":662,"children":663},{"style":231},[664],{"type":37,"value":665},"}`",{"type":32,"tag":188,"props":667,"children":668},{"style":212},[669],{"type":37,"value":670},")\n",{"type":32,"tag":188,"props":672,"children":673},{"class":190,"line":287},[674,679,684],{"type":32,"tag":188,"props":675,"children":676},{"style":195},[677],{"type":37,"value":678},"\u003C\u002F",{"type":32,"tag":188,"props":680,"children":681},{"style":212},[682],{"type":37,"value":683},"script",{"type":32,"tag":188,"props":685,"children":686},{"style":195},[687],{"type":37,"value":550},{"type":32,"tag":33,"props":689,"children":690},{},[691,693,699,701,706,708,713],{"type":37,"value":692},"Prerender sırasında ",{"type":32,"tag":40,"props":694,"children":696},{"className":695},[],[697],{"type":37,"value":698},"\u002Fapi\u002Fproducts\u002F123",{"type":37,"value":700}," call edilir, response ",{"type":32,"tag":40,"props":702,"children":704},{"className":703},[],[705],{"type":37,"value":515},{"type":37,"value":707}," içine gömülür. Client-side navigation yapınca aynı datayı reuse eder. Trade-off: payload size. 10.000 ürünlü sitede her ",{"type":32,"tag":40,"props":709,"children":711},{"className":710},[],[712],{"type":37,"value":515},{"type":37,"value":714}," 5KB ise toplam 50MB static asset üretmiş olursun. CDN bandwidth cost hesabına kat.",{"type":32,"tag":33,"props":716,"children":717},{},[718,720,726],{"type":37,"value":719},"Bunu optimize etmek için ",{"type":32,"tag":40,"props":721,"children":723},{"className":722},[],[724],{"type":37,"value":725},"nitro.output.publicDir",{"type":37,"value":727}," altında payload'ı gzip\u002Fbrotli compress et. Nginx\u002FCloudflare bunu otomatik yapar ama build-time compression ile 5KB → 1.2KB düşüş görürsün.",{"type":32,"tag":56,"props":729,"children":731},{"id":730},"build-performance-parallelization-ve-cache-strategies",[732],{"type":37,"value":733},"Build Performance: Parallelization ve Cache Strategies",{"type":32,"tag":33,"props":735,"children":736},{},[737],{"type":37,"value":738},"Nuxt 3 build pipeline 3 aşamalı: webpack\u002Fvite compile → nitro prerender → asset optimization. 10.000 route'luk prerender bottleneck olur.",{"type":32,"tag":33,"props":740,"children":741},{},[742,748,750,756],{"type":32,"tag":743,"props":744,"children":745},"strong",{},[746],{"type":37,"value":747},"Parallelization:",{"type":37,"value":749}," Nitro ",{"type":32,"tag":40,"props":751,"children":753},{"className":752},[],[754],{"type":37,"value":755},"prerender.concurrency",{"type":37,"value":757}," parametresi aynı anda render edilen route sayısını kontrol eder. Default 10. RAM yeterse 50'ye çıkar:",{"type":32,"tag":178,"props":759,"children":761},{"className":180,"code":760,"language":182,"meta":16,"style":16},"nitro: {\n  prerender: {\n    concurrency: 50,\n  },\n}\n",[762],{"type":32,"tag":40,"props":763,"children":764},{"__ignoreMap":16},[765,778,790,812,819],{"type":32,"tag":188,"props":766,"children":767},{"class":190,"line":191},[768,773],{"type":32,"tag":188,"props":769,"children":770},{"style":206},[771],{"type":37,"value":772},"nitro",{"type":32,"tag":188,"props":774,"children":775},{"style":212},[776],{"type":37,"value":777},": {\n",{"type":32,"tag":188,"props":779,"children":780},{"class":190,"line":218},[781,786],{"type":32,"tag":188,"props":782,"children":783},{"style":206},[784],{"type":37,"value":785},"  prerender",{"type":32,"tag":188,"props":787,"children":788},{"style":212},[789],{"type":37,"value":777},{"type":32,"tag":188,"props":791,"children":792},{"class":190,"line":227},[793,798,802,807],{"type":32,"tag":188,"props":794,"children":795},{"style":206},[796],{"type":37,"value":797},"    concurrency",{"type":32,"tag":188,"props":799,"children":800},{"style":212},[801],{"type":37,"value":601},{"type":32,"tag":188,"props":803,"children":804},{"style":242},[805],{"type":37,"value":806},"50",{"type":32,"tag":188,"props":808,"children":809},{"style":212},[810],{"type":37,"value":811},",\n",{"type":32,"tag":188,"props":813,"children":814},{"class":190,"line":259},[815],{"type":32,"tag":188,"props":816,"children":817},{"style":212},[818],{"type":37,"value":357},{"type":32,"tag":188,"props":820,"children":821},{"class":190,"line":287},[822],{"type":32,"tag":188,"props":823,"children":824},{"style":212},[825],{"type":37,"value":826},"}\n",{"type":32,"tag":33,"props":828,"children":829},{},[830],{"type":37,"value":831},"4 core CPU + 16GB RAM'de 10 → 50 değişimi build süresini 40s → 12s düşürdü. Ama 50 üstü diminishing returns verir, CPU context switch overhead artar.",{"type":32,"tag":33,"props":833,"children":834},{},[835,840,842,848],{"type":32,"tag":743,"props":836,"children":837},{},[838],{"type":37,"value":839},"Incremental build cache:",{"type":37,"value":841}," Netlify\u002FVercel ",{"type":32,"tag":40,"props":843,"children":845},{"className":844},[],[846],{"type":37,"value":847},".nuxt\u002Fprerender",{"type":37,"value":849}," cache'i tutar. Değişmeyen route'ları rebuild etmez. Git hash bazlı cache invalidation ile her deploy'da sadece değişen route'lar yeniden render olur.",{"type":32,"tag":178,"props":851,"children":853},{"className":180,"code":852,"language":182,"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",[854],{"type":32,"tag":40,"props":855,"children":856},{"__ignoreMap":16},[857,865,873,890,907,916,924,941,949,957],{"type":32,"tag":188,"props":858,"children":859},{"class":190,"line":191},[860],{"type":32,"tag":188,"props":861,"children":862},{"style":253},[863],{"type":37,"value":864},"\u002F\u002F netlify.toml\n",{"type":32,"tag":188,"props":866,"children":867},{"class":190,"line":218},[868],{"type":32,"tag":188,"props":869,"children":870},{"style":212},[871],{"type":37,"value":872},"[build]\n",{"type":32,"tag":188,"props":874,"children":875},{"class":190,"line":227},[876,881,885],{"type":32,"tag":188,"props":877,"children":878},{"style":212},[879],{"type":37,"value":880},"  command ",{"type":32,"tag":188,"props":882,"children":883},{"style":195},[884],{"type":37,"value":616},{"type":32,"tag":188,"props":886,"children":887},{"style":231},[888],{"type":37,"value":889}," \"nuxt build\"\n",{"type":32,"tag":188,"props":891,"children":892},{"class":190,"line":259},[893,898,902],{"type":32,"tag":188,"props":894,"children":895},{"style":212},[896],{"type":37,"value":897},"  publish ",{"type":32,"tag":188,"props":899,"children":900},{"style":195},[901],{"type":37,"value":616},{"type":32,"tag":188,"props":903,"children":904},{"style":231},[905],{"type":37,"value":906}," \".output\u002Fpublic\"\n",{"type":32,"tag":188,"props":908,"children":909},{"class":190,"line":287},[910],{"type":32,"tag":188,"props":911,"children":913},{"emptyLinePlaceholder":912},true,[914],{"type":37,"value":915},"\n",{"type":32,"tag":188,"props":917,"children":918},{"class":190,"line":324},[919],{"type":32,"tag":188,"props":920,"children":921},{"style":212},[922],{"type":37,"value":923},"[[plugins]]\n",{"type":32,"tag":188,"props":925,"children":926},{"class":190,"line":351},[927,932,936],{"type":32,"tag":188,"props":928,"children":929},{"style":195},[930],{"type":37,"value":931},"  package",{"type":32,"tag":188,"props":933,"children":934},{"style":195},[935],{"type":37,"value":568},{"type":32,"tag":188,"props":937,"children":938},{"style":231},[939],{"type":37,"value":940}," \"@netlify\u002Fplugin-nextjs\"\n",{"type":32,"tag":188,"props":942,"children":943},{"class":190,"line":26},[944],{"type":32,"tag":188,"props":945,"children":946},{"style":212},[947],{"type":37,"value":948},"  \n",{"type":32,"tag":188,"props":950,"children":951},{"class":190,"line":368},[952],{"type":32,"tag":188,"props":953,"children":954},{"style":212},[955],{"type":37,"value":956},"[build.environment]\n",{"type":32,"tag":188,"props":958,"children":959},{"class":190,"line":377},[960,965,969],{"type":32,"tag":188,"props":961,"children":962},{"style":242},[963],{"type":37,"value":964},"  NUXT_TELEMETRY_DISABLED",{"type":32,"tag":188,"props":966,"children":967},{"style":195},[968],{"type":37,"value":568},{"type":32,"tag":188,"props":970,"children":971},{"style":231},[972],{"type":37,"value":973}," \"1\"\n",{"type":32,"tag":33,"props":975,"children":976},{},[977],{"type":37,"value":978},"Cache hit rate %70 olduğunda 5000 route'luk site 15s yerine 5s build olur.",{"type":32,"tag":499,"props":980,"children":982},{"id":981},"bundle-size-vs-prerender-trade-off",[983],{"type":37,"value":984},"Bundle Size vs Prerender Trade-off",{"type":32,"tag":33,"props":986,"children":987},{},[988,990,996],{"type":37,"value":989},"Full prerender ile üretilen HTML dosyaları hydration için JS bundle içerir. Nuxt 3'te ",{"type":32,"tag":40,"props":991,"children":993},{"className":992},[],[994],{"type":37,"value":995},"experimental.payloadExtraction",{"type":37,"value":997}," ile payload'ı HTML'den ayırabilirsin. Bu chunk splitting'i optimize eder.",{"type":32,"tag":178,"props":999,"children":1001},{"className":180,"code":1000,"language":182,"meta":16,"style":16},"experimental: {\n  payloadExtraction: true,\n  inlineSSRStyles: false, \u002F\u002F Critical CSS inline edilmez\n}\n",[1002],{"type":32,"tag":40,"props":1003,"children":1004},{"__ignoreMap":16},[1005,1017,1037,1062],{"type":32,"tag":188,"props":1006,"children":1007},{"class":190,"line":191},[1008,1013],{"type":32,"tag":188,"props":1009,"children":1010},{"style":206},[1011],{"type":37,"value":1012},"experimental",{"type":32,"tag":188,"props":1014,"children":1015},{"style":212},[1016],{"type":37,"value":777},{"type":32,"tag":188,"props":1018,"children":1019},{"class":190,"line":218},[1020,1025,1029,1033],{"type":32,"tag":188,"props":1021,"children":1022},{"style":206},[1023],{"type":37,"value":1024},"  payloadExtraction",{"type":32,"tag":188,"props":1026,"children":1027},{"style":212},[1028],{"type":37,"value":601},{"type":32,"tag":188,"props":1030,"children":1031},{"style":242},[1032],{"type":37,"value":245},{"type":32,"tag":188,"props":1034,"children":1035},{"style":212},[1036],{"type":37,"value":811},{"type":32,"tag":188,"props":1038,"children":1039},{"class":190,"line":227},[1040,1045,1049,1053,1057],{"type":32,"tag":188,"props":1041,"children":1042},{"style":206},[1043],{"type":37,"value":1044},"  inlineSSRStyles",{"type":32,"tag":188,"props":1046,"children":1047},{"style":212},[1048],{"type":37,"value":601},{"type":32,"tag":188,"props":1050,"children":1051},{"style":242},[1052],{"type":37,"value":312},{"type":32,"tag":188,"props":1054,"children":1055},{"style":212},[1056],{"type":37,"value":47},{"type":32,"tag":188,"props":1058,"children":1059},{"style":253},[1060],{"type":37,"value":1061},"\u002F\u002F Critical CSS inline edilmez\n",{"type":32,"tag":188,"props":1063,"children":1064},{"class":190,"line":259},[1065],{"type":32,"tag":188,"props":1066,"children":1067},{"style":212},[1068],{"type":37,"value":826},{"type":32,"tag":33,"props":1070,"children":1071},{},[1072,1078],{"type":32,"tag":40,"props":1073,"children":1075},{"className":1074},[],[1076],{"type":37,"value":1077},"payloadExtraction: true",{"type":37,"value":1079}," ile 250KB HTML → 180KB HTML + 70KB JSON ayrımı yapılır. Client-side navigation JSON'ı fetch eder, HTML'i reparse etmez. LCP 2.1s → 1.8s düşer (90th percentile, mobile 3G).",{"type":32,"tag":33,"props":1081,"children":1082},{},[1083],{"type":37,"value":1084},"Ama trade-off: ekstra 1 HTTP request. HTTP\u002F2 multiplexing varsa sorun olmaz, HTTP\u002F1.1'de latency artar. Cloudflare\u002FFastly gibi modern CDN'lerde HTTP\u002F2 default olduğu için bu strateji kazandırır.",{"type":32,"tag":56,"props":1086,"children":1088},{"id":1087},"headless-commerce-entegrasyonu-shopify-nuxt-ssg",[1089],{"type":37,"value":1090},"Headless Commerce Entegrasyonu: Shopify + Nuxt SSG",{"type":32,"tag":33,"props":1092,"children":1093},{},[1094],{"type":37,"value":1095},"E-ticaret sitelerinde ürün sayfalarını prerender etmek inventory sync kompleksitesi yaratır. Shopify GraphQL Storefront API'si ile webhook-driven revalidation kurarsın.",{"type":32,"tag":178,"props":1097,"children":1099},{"className":180,"code":1098,"language":182,"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",[1100],{"type":32,"tag":40,"props":1101,"children":1102},{"__ignoreMap":16},[1103,1111,1161,1192,1199,1227,1249,1281,1299,1307,1315,1322,1345],{"type":32,"tag":188,"props":1104,"children":1105},{"class":190,"line":191},[1106],{"type":32,"tag":188,"props":1107,"children":1108},{"style":253},[1109],{"type":37,"value":1110},"\u002F\u002F server\u002Fapi\u002Frevalidate.post.ts\n",{"type":32,"tag":188,"props":1112,"children":1113},{"class":190,"line":218},[1114,1118,1122,1127,1131,1136,1141,1146,1151,1156],{"type":32,"tag":188,"props":1115,"children":1116},{"style":195},[1117],{"type":37,"value":198},{"type":32,"tag":188,"props":1119,"children":1120},{"style":195},[1121],{"type":37,"value":203},{"type":32,"tag":188,"props":1123,"children":1124},{"style":206},[1125],{"type":37,"value":1126}," defineEventHandler",{"type":32,"tag":188,"props":1128,"children":1129},{"style":212},[1130],{"type":37,"value":631},{"type":32,"tag":188,"props":1132,"children":1133},{"style":195},[1134],{"type":37,"value":1135},"async",{"type":32,"tag":188,"props":1137,"children":1138},{"style":212},[1139],{"type":37,"value":1140}," (",{"type":32,"tag":188,"props":1142,"children":1143},{"style":593},[1144],{"type":37,"value":1145},"event",{"type":32,"tag":188,"props":1147,"children":1148},{"style":212},[1149],{"type":37,"value":1150},") ",{"type":32,"tag":188,"props":1152,"children":1153},{"style":195},[1154],{"type":37,"value":1155},"=>",{"type":32,"tag":188,"props":1157,"children":1158},{"style":212},[1159],{"type":37,"value":1160}," {\n",{"type":32,"tag":188,"props":1162,"children":1163},{"class":190,"line":227},[1164,1169,1174,1178,1182,1187],{"type":32,"tag":188,"props":1165,"children":1166},{"style":195},[1167],{"type":37,"value":1168},"  const",{"type":32,"tag":188,"props":1170,"children":1171},{"style":242},[1172],{"type":37,"value":1173}," body",{"type":32,"tag":188,"props":1175,"children":1176},{"style":195},[1177],{"type":37,"value":568},{"type":32,"tag":188,"props":1179,"children":1180},{"style":195},[1181],{"type":37,"value":621},{"type":32,"tag":188,"props":1183,"children":1184},{"style":206},[1185],{"type":37,"value":1186}," readBody",{"type":32,"tag":188,"props":1188,"children":1189},{"style":212},[1190],{"type":37,"value":1191},"(event)\n",{"type":32,"tag":188,"props":1193,"children":1194},{"class":190,"line":259},[1195],{"type":32,"tag":188,"props":1196,"children":1197},{"style":212},[1198],{"type":37,"value":948},{"type":32,"tag":188,"props":1200,"children":1201},{"class":190,"line":287},[1202,1207,1212,1217,1222],{"type":32,"tag":188,"props":1203,"children":1204},{"style":195},[1205],{"type":37,"value":1206},"  if",{"type":32,"tag":188,"props":1208,"children":1209},{"style":212},[1210],{"type":37,"value":1211}," (body.topic ",{"type":32,"tag":188,"props":1213,"children":1214},{"style":195},[1215],{"type":37,"value":1216},"===",{"type":32,"tag":188,"props":1218,"children":1219},{"style":231},[1220],{"type":37,"value":1221}," 'products\u002Fupdate'",{"type":32,"tag":188,"props":1223,"children":1224},{"style":212},[1225],{"type":37,"value":1226},") {\n",{"type":32,"tag":188,"props":1228,"children":1229},{"class":190,"line":324},[1230,1235,1240,1244],{"type":32,"tag":188,"props":1231,"children":1232},{"style":195},[1233],{"type":37,"value":1234},"    const",{"type":32,"tag":188,"props":1236,"children":1237},{"style":242},[1238],{"type":37,"value":1239}," productId",{"type":32,"tag":188,"props":1241,"children":1242},{"style":195},[1243],{"type":37,"value":568},{"type":32,"tag":188,"props":1245,"children":1246},{"style":212},[1247],{"type":37,"value":1248}," body.id\n",{"type":32,"tag":188,"props":1250,"children":1251},{"class":190,"line":351},[1252,1257,1262,1267,1271,1276],{"type":32,"tag":188,"props":1253,"children":1254},{"style":195},[1255],{"type":37,"value":1256},"    await",{"type":32,"tag":188,"props":1258,"children":1259},{"style":212},[1260],{"type":37,"value":1261}," nitroApp.hooks.",{"type":32,"tag":188,"props":1263,"children":1264},{"style":206},[1265],{"type":37,"value":1266},"callHook",{"type":32,"tag":188,"props":1268,"children":1269},{"style":212},[1270],{"type":37,"value":631},{"type":32,"tag":188,"props":1272,"children":1273},{"style":231},[1274],{"type":37,"value":1275},"'prerender:routes'",{"type":32,"tag":188,"props":1277,"children":1278},{"style":212},[1279],{"type":37,"value":1280},", [\n",{"type":32,"tag":188,"props":1282,"children":1283},{"class":190,"line":26},[1284,1289,1294],{"type":32,"tag":188,"props":1285,"children":1286},{"style":231},[1287],{"type":37,"value":1288},"      `\u002Fproducts\u002F${",{"type":32,"tag":188,"props":1290,"children":1291},{"style":212},[1292],{"type":37,"value":1293},"productId",{"type":32,"tag":188,"props":1295,"children":1296},{"style":231},[1297],{"type":37,"value":1298},"}`\n",{"type":32,"tag":188,"props":1300,"children":1301},{"class":190,"line":368},[1302],{"type":32,"tag":188,"props":1303,"children":1304},{"style":212},[1305],{"type":37,"value":1306},"    ])\n",{"type":32,"tag":188,"props":1308,"children":1309},{"class":190,"line":377},[1310],{"type":32,"tag":188,"props":1311,"children":1312},{"style":212},[1313],{"type":37,"value":1314},"  }\n",{"type":32,"tag":188,"props":1316,"children":1317},{"class":190,"line":399},[1318],{"type":32,"tag":188,"props":1319,"children":1320},{"style":212},[1321],{"type":37,"value":948},{"type":32,"tag":188,"props":1323,"children":1324},{"class":190,"line":423},[1325,1330,1335,1340],{"type":32,"tag":188,"props":1326,"children":1327},{"style":195},[1328],{"type":37,"value":1329},"  return",{"type":32,"tag":188,"props":1331,"children":1332},{"style":212},[1333],{"type":37,"value":1334}," { status: ",{"type":32,"tag":188,"props":1336,"children":1337},{"style":231},[1338],{"type":37,"value":1339},"'revalidated'",{"type":32,"tag":188,"props":1341,"children":1342},{"style":212},[1343],{"type":37,"value":1344}," }\n",{"type":32,"tag":188,"props":1346,"children":1347},{"class":190,"line":455},[1348],{"type":32,"tag":188,"props":1349,"children":1350},{"style":212},[1351],{"type":37,"value":478},{"type":32,"tag":33,"props":1353,"children":1354},{},[1355,1357,1363],{"type":37,"value":1356},"Shopify Admin API'den webhook subscribe et → ürün güncellenince ",{"type":32,"tag":40,"props":1358,"children":1360},{"className":1359},[],[1361],{"type":37,"value":1362},"\u002Fapi\u002Frevalidate",{"type":37,"value":1364}," tetiklenir → sadece o route yeniden render olur. Tüm kataloğu rebuild yerine 1 route regeneration 200ms sürer.",{"type":32,"tag":33,"props":1366,"children":1367},{},[1368,1377],{"type":32,"tag":1369,"props":1370,"children":1374},"a",{"href":1371,"rel":1372},"https:\u002F\u002Fwww.roibase.com.tr\u002Ftr\u002Fheadless",[1373],"nofollow",[1375],{"type":37,"value":1376},"Headless Commerce",{"type":37,"value":1378}," mimarisinde bu pattern kritik. Monolithic platform'larda full rebuild zorunludur, headless'ta granular invalidation yaparsın. 50.000 SKU'lu e-ticarette günlük 500 ürün güncellemesi olduğunda full rebuild 6 saat, incremental revalidation 2 dakika sürer.",{"type":32,"tag":56,"props":1380,"children":1382},{"id":1381},"isr-edge-caching-cloudflare-workers-ile-hybrid-strateji",[1383],{"type":37,"value":1384},"ISR + Edge Caching: Cloudflare Workers ile Hybrid Strateji",{"type":32,"tag":33,"props":1386,"children":1387},{},[1388],{"type":37,"value":1389},"Nuxt 3 + Cloudflare Pages kombinasyonunda ISR'yi Workers KV ile implement edersin. Route ilk request'te render edilir, KV'ye yazılır, sonraki request'ler KV'den serve edilir.",{"type":32,"tag":178,"props":1391,"children":1393},{"className":180,"code":1392,"language":182,"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 saat TTL\n  },\n})\n",[1394],{"type":32,"tag":40,"props":1395,"children":1396},{"__ignoreMap":16},[1397,1405,1424,1431,1448,1455,1462,1487,1494],{"type":32,"tag":188,"props":1398,"children":1399},{"class":190,"line":191},[1400],{"type":32,"tag":188,"props":1401,"children":1402},{"style":253},[1403],{"type":37,"value":1404},"\u002F\u002F nuxt.config.ts\n",{"type":32,"tag":188,"props":1406,"children":1407},{"class":190,"line":218},[1408,1412,1416,1420],{"type":32,"tag":188,"props":1409,"children":1410},{"style":195},[1411],{"type":37,"value":198},{"type":32,"tag":188,"props":1413,"children":1414},{"style":195},[1415],{"type":37,"value":203},{"type":32,"tag":188,"props":1417,"children":1418},{"style":206},[1419],{"type":37,"value":209},{"type":32,"tag":188,"props":1421,"children":1422},{"style":212},[1423],{"type":37,"value":215},{"type":32,"tag":188,"props":1425,"children":1426},{"class":190,"line":227},[1427],{"type":32,"tag":188,"props":1428,"children":1429},{"style":212},[1430],{"type":37,"value":365},{"type":32,"tag":188,"props":1432,"children":1433},{"class":190,"line":259},[1434,1439,1444],{"type":32,"tag":188,"props":1435,"children":1436},{"style":212},[1437],{"type":37,"value":1438},"    preset: ",{"type":32,"tag":188,"props":1440,"children":1441},{"style":231},[1442],{"type":37,"value":1443},"'cloudflare-pages'",{"type":32,"tag":188,"props":1445,"children":1446},{"style":212},[1447],{"type":37,"value":811},{"type":32,"tag":188,"props":1449,"children":1450},{"class":190,"line":287},[1451],{"type":32,"tag":188,"props":1452,"children":1453},{"style":212},[1454],{"type":37,"value":357},{"type":32,"tag":188,"props":1456,"children":1457},{"class":190,"line":324},[1458],{"type":32,"tag":188,"props":1459,"children":1460},{"style":212},[1461],{"type":37,"value":224},{"type":32,"tag":188,"props":1463,"children":1464},{"class":190,"line":351},[1465,1470,1474,1478,1482],{"type":32,"tag":188,"props":1466,"children":1467},{"style":231},[1468],{"type":37,"value":1469},"    '\u002Fblog\u002F**'",{"type":32,"tag":188,"props":1471,"children":1472},{"style":212},[1473],{"type":37,"value":335},{"type":32,"tag":188,"props":1475,"children":1476},{"style":242},[1477],{"type":37,"value":275},{"type":32,"tag":188,"props":1479,"children":1480},{"style":212},[1481],{"type":37,"value":250},{"type":32,"tag":188,"props":1483,"children":1484},{"style":253},[1485],{"type":37,"value":1486},"\u002F\u002F 1 saat TTL\n",{"type":32,"tag":188,"props":1488,"children":1489},{"class":190,"line":26},[1490],{"type":32,"tag":188,"props":1491,"children":1492},{"style":212},[1493],{"type":37,"value":357},{"type":32,"tag":188,"props":1495,"children":1496},{"class":190,"line":368},[1497],{"type":32,"tag":188,"props":1498,"children":1499},{"style":212},[1500],{"type":37,"value":478},{"type":32,"tag":33,"props":1502,"children":1503},{},[1504],{"type":37,"value":1505},"Cloudflare KV latency ~50ms (global edge). İlk render 800ms + 50ms KV write, sonraki request'ler 50ms. Cache hit rate %95'te ortalama response time 95×50ms + 5×850ms = 90ms olur. Full SSR'da 800ms sabit kalırdı.",{"type":32,"tag":33,"props":1507,"children":1508},{},[1509],{"type":37,"value":1510},"Trade-off: KV write cost. 1M request\u002Fmonth'ta $0.50 (Cloudflare pricing 2026). Static hosting $0 olduğu için ISR maliyeti ekler ama UX kazancı bunu justify eder.",{"type":32,"tag":1512,"props":1513,"children":1514},"hr",{},[],{"type":32,"tag":33,"props":1516,"children":1517},{},[1518],{"type":37,"value":1519},"Nuxt 3 SSG stratejisi data freshness, build time ve runtime performance üçgeninde karar vermeyi gerektirir. Homepage prerender, long tail ISR, kritik yollar server-side — bu mix'i her projede yeniden hesapla. Ölçüm yapmadan \"full static daha hızlı\" demek yanlış, 10.000 route'ta build süresi UX'i bozabilir. Incremental regeneration + edge cache ile hem build time hem response time kazanırsın ama orchestration kompleksitesini kabul etmelisin.",{"type":32,"tag":1521,"props":1522,"children":1523},"style",{},[1524],{"type":37,"value":1525},"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":227,"depth":227,"links":1527},[1528,1529,1532,1535,1536],{"id":58,"depth":218,"text":61},{"id":127,"depth":218,"text":130,"children":1530},[1531],{"id":501,"depth":227,"text":504},{"id":730,"depth":218,"text":733,"children":1533},[1534],{"id":981,"depth":227,"text":984},{"id":1087,"depth":218,"text":1090},{"id":1381,"depth":218,"text":1384},"markdown","content:tr:tech:nuxt-3-ssg-prerender-stratejileri-ve-build-optimizasyonu.md","content","tr\u002Ftech\u002Fnuxt-3-ssg-prerender-stratejileri-ve-build-optimizasyonu.md","tr\u002Ftech\u002Fnuxt-3-ssg-prerender-stratejileri-ve-build-optimizasyonu","md",1780898609917]