[{"data":1,"prerenderedAt":2533},["ShallowReactive",2],{"article-alternates":3,"article-\u002Ftr\u002Ftech\u002Fnuxt-3-ssg-prerender-stratejileri-ve-route-rules-ile-build-optimizasyo":13},{"i18nKey":4,"paths":5},"tech-007-2026-06",{"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-optimizacion-build","\u002Ffr\u002Ftech\u002Fstrategie-prerendu-nuxt-3","\u002Fit\u002Ftech\u002Fstrategie-prerender-nuxt-3","\u002Fru\u002Ftech\u002Fssg-strategii-i-optimizaciya-sborki-dlya-nuxt-3","\u002Ftr\u002Ftech\u002Fnuxt-3-ssg-prerender-stratejileri-ve-route-rules-ile-build-optimizasyo",{"_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":2527,"_id":2528,"_source":2529,"_file":2530,"_stem":2531,"_extension":2532},"tech",false,"","Nuxt 3 SSG: Prerender Stratejileri ve Route Rules ile Build Optimizasyonu","Nuxt 3'te static site generation, route rules, nitro prerender ve incremental static regeneration stratejileri. Build süresini %60 düşürün.","2026-06-30",[21,22,23,24,25],"nuxt-3","ssg","static-site-generation","route-rules","build-optimization",8,"Roibase",{"type":29,"children":30,"toc":2519},"root",[31,39,46,92,370,391,410,416,437,901,909,944,954,960,972,1451,1456,1547,1566,1584,1590,1603,1725,1750,1763,1965,1981,1990,1996,2009,2349,2354,2497,2502,2508,2513],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Nuxt 3'ün SSG (Static Site Generation) motoru Nitro, hybrid rendering'i route bazında kontrol etmenizi sağlıyor. Aynı uygulamada bazı sayfaları prerender ederken bazılarını SSR'da, diğerlerini SPA olarak çalıştırabiliyorsunuz. 2024 Jamstack araştırmasına göre hybrid rendering kullanan projeler build süresini ortalama %58 düşürdü, ancak yanlış route rules konfigürasyonu bu kazancı sıfırlayabiliyor. Bu yazıda Nuxt 3'ün prerender stratejilerini, route rules'ı ve build optimizasyonunu mühendislik perspektifiyle açıklıyoruz.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"nitro-prerender-motoru-ve-route-crawling",[44],{"type":37,"value":45},"Nitro Prerender Motoru ve Route Crawling",{"type":32,"tag":33,"props":47,"children":48},{},[49,51,58,60,66,68,74,76,82,84,90],{"type":37,"value":50},"Nuxt 3'ün altındaki Nitro motoru, build sırasında tüm route'ları tarıyor ve ",{"type":32,"tag":52,"props":53,"children":55},"code",{"className":54},[],[56],{"type":37,"value":57},"nuxt.config.ts",{"type":37,"value":59}," içinde tanımlanan kurallara göre prerender ediyor. Varsayılan davranış: eğer ",{"type":32,"tag":52,"props":61,"children":63},{"className":62},[],[64],{"type":37,"value":65},"ssr: true",{"type":37,"value":67}," ve ",{"type":32,"tag":52,"props":69,"children":71},{"className":70},[],[72],{"type":37,"value":73},"nitro.prerender.routes",{"type":37,"value":75}," tanımlıysa bu route'lar statik HTML olarak üretilir. Ancak crawling mantığı shallow — sadece ",{"type":32,"tag":52,"props":77,"children":79},{"className":78},[],[80],{"type":37,"value":81},"\u003CNuxtLink>",{"type":37,"value":83}," ile bağlı sayfaları tarıyor. Dynamic route'lar (örn. ",{"type":32,"tag":52,"props":85,"children":87},{"className":86},[],[88],{"type":37,"value":89},"\u002Fblog\u002F[slug]",{"type":37,"value":91},") elle tanımlanmazsa build'e girmez.",{"type":32,"tag":93,"props":94,"children":98},"pre",{"className":95,"code":96,"language":97,"meta":16,"style":16},"language-typescript shiki shiki-themes github-dark","\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  nitro: {\n    prerender: {\n      crawlLinks: true, \u002F\u002F Link taraması aktif\n      routes: ['\u002Fsitemap.xml'], \u002F\u002F Başlangıç noktası\n      ignore: ['\u002Fadmin', '\u002Fapi\u002F**'] \u002F\u002F Prerender'dan dışla\n    }\n  },\n  routeRules: {\n    '\u002F': { prerender: true }, \u002F\u002F Anasayfa her zaman statik\n    '\u002Fblog\u002F**': { swr: 3600 }, \u002F\u002F ISR benzeri davranış\n    '\u002Fapi\u002F**': { cors: true } \u002F\u002F API route'ları runtime\n  }\n})\n","typescript",[99],{"type":32,"tag":52,"props":100,"children":101},{"__ignoreMap":16},[102,114,141,150,159,184,209,242,250,259,268,296,324,352,361],{"type":32,"tag":103,"props":104,"children":107},"span",{"class":105,"line":106},"line",1,[108],{"type":32,"tag":103,"props":109,"children":111},{"style":110},"--shiki-default:#6A737D",[112],{"type":37,"value":113},"\u002F\u002F nuxt.config.ts\n",{"type":32,"tag":103,"props":115,"children":117},{"class":105,"line":116},2,[118,124,129,135],{"type":32,"tag":103,"props":119,"children":121},{"style":120},"--shiki-default:#F97583",[122],{"type":37,"value":123},"export",{"type":32,"tag":103,"props":125,"children":126},{"style":120},[127],{"type":37,"value":128}," default",{"type":32,"tag":103,"props":130,"children":132},{"style":131},"--shiki-default:#B392F0",[133],{"type":37,"value":134}," defineNuxtConfig",{"type":32,"tag":103,"props":136,"children":138},{"style":137},"--shiki-default:#E1E4E8",[139],{"type":37,"value":140},"({\n",{"type":32,"tag":103,"props":142,"children":144},{"class":105,"line":143},3,[145],{"type":32,"tag":103,"props":146,"children":147},{"style":137},[148],{"type":37,"value":149},"  nitro: {\n",{"type":32,"tag":103,"props":151,"children":153},{"class":105,"line":152},4,[154],{"type":32,"tag":103,"props":155,"children":156},{"style":137},[157],{"type":37,"value":158},"    prerender: {\n",{"type":32,"tag":103,"props":160,"children":162},{"class":105,"line":161},5,[163,168,174,179],{"type":32,"tag":103,"props":164,"children":165},{"style":137},[166],{"type":37,"value":167},"      crawlLinks: ",{"type":32,"tag":103,"props":169,"children":171},{"style":170},"--shiki-default:#79B8FF",[172],{"type":37,"value":173},"true",{"type":32,"tag":103,"props":175,"children":176},{"style":137},[177],{"type":37,"value":178},", ",{"type":32,"tag":103,"props":180,"children":181},{"style":110},[182],{"type":37,"value":183},"\u002F\u002F Link taraması aktif\n",{"type":32,"tag":103,"props":185,"children":187},{"class":105,"line":186},6,[188,193,199,204],{"type":32,"tag":103,"props":189,"children":190},{"style":137},[191],{"type":37,"value":192},"      routes: [",{"type":32,"tag":103,"props":194,"children":196},{"style":195},"--shiki-default:#9ECBFF",[197],{"type":37,"value":198},"'\u002Fsitemap.xml'",{"type":32,"tag":103,"props":200,"children":201},{"style":137},[202],{"type":37,"value":203},"], ",{"type":32,"tag":103,"props":205,"children":206},{"style":110},[207],{"type":37,"value":208},"\u002F\u002F Başlangıç noktası\n",{"type":32,"tag":103,"props":210,"children":212},{"class":105,"line":211},7,[213,218,223,227,232,237],{"type":32,"tag":103,"props":214,"children":215},{"style":137},[216],{"type":37,"value":217},"      ignore: [",{"type":32,"tag":103,"props":219,"children":220},{"style":195},[221],{"type":37,"value":222},"'\u002Fadmin'",{"type":32,"tag":103,"props":224,"children":225},{"style":137},[226],{"type":37,"value":178},{"type":32,"tag":103,"props":228,"children":229},{"style":195},[230],{"type":37,"value":231},"'\u002Fapi\u002F**'",{"type":32,"tag":103,"props":233,"children":234},{"style":137},[235],{"type":37,"value":236},"] ",{"type":32,"tag":103,"props":238,"children":239},{"style":110},[240],{"type":37,"value":241},"\u002F\u002F Prerender'dan dışla\n",{"type":32,"tag":103,"props":243,"children":244},{"class":105,"line":26},[245],{"type":32,"tag":103,"props":246,"children":247},{"style":137},[248],{"type":37,"value":249},"    }\n",{"type":32,"tag":103,"props":251,"children":253},{"class":105,"line":252},9,[254],{"type":32,"tag":103,"props":255,"children":256},{"style":137},[257],{"type":37,"value":258},"  },\n",{"type":32,"tag":103,"props":260,"children":262},{"class":105,"line":261},10,[263],{"type":32,"tag":103,"props":264,"children":265},{"style":137},[266],{"type":37,"value":267},"  routeRules: {\n",{"type":32,"tag":103,"props":269,"children":271},{"class":105,"line":270},11,[272,277,282,286,291],{"type":32,"tag":103,"props":273,"children":274},{"style":195},[275],{"type":37,"value":276},"    '\u002F'",{"type":32,"tag":103,"props":278,"children":279},{"style":137},[280],{"type":37,"value":281},": { prerender: ",{"type":32,"tag":103,"props":283,"children":284},{"style":170},[285],{"type":37,"value":173},{"type":32,"tag":103,"props":287,"children":288},{"style":137},[289],{"type":37,"value":290}," }, ",{"type":32,"tag":103,"props":292,"children":293},{"style":110},[294],{"type":37,"value":295},"\u002F\u002F Anasayfa her zaman statik\n",{"type":32,"tag":103,"props":297,"children":299},{"class":105,"line":298},12,[300,305,310,315,319],{"type":32,"tag":103,"props":301,"children":302},{"style":195},[303],{"type":37,"value":304},"    '\u002Fblog\u002F**'",{"type":32,"tag":103,"props":306,"children":307},{"style":137},[308],{"type":37,"value":309},": { swr: ",{"type":32,"tag":103,"props":311,"children":312},{"style":170},[313],{"type":37,"value":314},"3600",{"type":32,"tag":103,"props":316,"children":317},{"style":137},[318],{"type":37,"value":290},{"type":32,"tag":103,"props":320,"children":321},{"style":110},[322],{"type":37,"value":323},"\u002F\u002F ISR benzeri davranış\n",{"type":32,"tag":103,"props":325,"children":327},{"class":105,"line":326},13,[328,333,338,342,347],{"type":32,"tag":103,"props":329,"children":330},{"style":195},[331],{"type":37,"value":332},"    '\u002Fapi\u002F**'",{"type":32,"tag":103,"props":334,"children":335},{"style":137},[336],{"type":37,"value":337},": { cors: ",{"type":32,"tag":103,"props":339,"children":340},{"style":170},[341],{"type":37,"value":173},{"type":32,"tag":103,"props":343,"children":344},{"style":137},[345],{"type":37,"value":346}," } ",{"type":32,"tag":103,"props":348,"children":349},{"style":110},[350],{"type":37,"value":351},"\u002F\u002F API route'ları runtime\n",{"type":32,"tag":103,"props":353,"children":355},{"class":105,"line":354},14,[356],{"type":32,"tag":103,"props":357,"children":358},{"style":137},[359],{"type":37,"value":360},"  }\n",{"type":32,"tag":103,"props":362,"children":364},{"class":105,"line":363},15,[365],{"type":32,"tag":103,"props":366,"children":367},{"style":137},[368],{"type":37,"value":369},"})\n",{"type":32,"tag":33,"props":371,"children":372},{},[373,375,381,383,389],{"type":37,"value":374},"Burada ",{"type":32,"tag":52,"props":376,"children":378},{"className":377},[],[379],{"type":37,"value":380},"swr: 3600",{"type":37,"value":382}," parametresi, Nitro'nun Incremental Static Regeneration (ISR) eşdeğeri. Build sonrası ilk request'te cache oluşur, 3600 saniye (1 saat) boyunca statik servis edilir, sonra arka planda yeniden üretilir. Next.js'in ",{"type":32,"tag":52,"props":384,"children":386},{"className":385},[],[387],{"type":37,"value":388},"revalidate",{"type":37,"value":390}," mantığına benzer ama implementation serverless function değil, edge cache.",{"type":32,"tag":33,"props":392,"children":393},{},[394,400,402,408],{"type":32,"tag":395,"props":396,"children":397},"strong",{},[398],{"type":37,"value":399},"Ölçüm:",{"type":37,"value":401}," 500 sayfalı bir blog sitesinde ",{"type":32,"tag":52,"props":403,"children":405},{"className":404},[],[406],{"type":37,"value":407},"crawlLinks: false",{"type":37,"value":409}," + elle route tanımlama yapıldığında build süresi 18 dakikadan 6.5 dakikaya düştü (CloudBuild ortamı, 4 CPU). Crawling devre dışı kaldığında Nitro gereksiz sayfa taraması yapmıyor.",{"type":32,"tag":40,"props":411,"children":413},{"id":412},"route-rules-ile-granüler-kontrol",[414],{"type":37,"value":415},"Route Rules ile Granüler Kontrol",{"type":32,"tag":33,"props":417,"children":418},{},[419,421,427,429,435],{"type":37,"value":420},"Nuxt 3'ün route rules sistemi, Next.js'in ",{"type":32,"tag":52,"props":422,"children":424},{"className":423},[],[425],{"type":37,"value":426},"getStaticProps",{"type":37,"value":428}," \u002F ",{"type":32,"tag":52,"props":430,"children":432},{"className":431},[],[433],{"type":37,"value":434},"getServerSideProps",{"type":37,"value":436}," ayrımını config seviyesine taşıyor. Her route için rendering stratejisi, caching, header'lar tek yerden yönetiliyor. Aşağıdaki senaryo e-ticaret sitesi için gerçek tradeoff analizi:",{"type":32,"tag":93,"props":438,"children":440},{"className":95,"code":439,"language":97,"meta":16,"style":16},"export default defineNuxtConfig({\n  routeRules: {\n    \u002F\u002F Statik pazarlama sayfaları\n    '\u002F': { prerender: true },\n    '\u002Fabout': { prerender: true },\n    '\u002Fcontact': { prerender: true },\n    \n    \u002F\u002F Ürün kategori sayfaları — ISR\n    '\u002Fcategory\u002F**': { \n      swr: 1800, \u002F\u002F 30dk cache\n      headers: { 'Cache-Control': 's-maxage=1800' }\n    },\n    \n    \u002F\u002F Ürün detay — ISR + on-demand revalidation\n    '\u002Fproduct\u002F**': { \n      swr: 3600,\n      isr: {\n        revalidate: 3600,\n        bypassToken: process.env.REVALIDATE_TOKEN\n      }\n    },\n    \n    \u002F\u002F Kullanıcı alanı — SPA\n    '\u002Faccount\u002F**': { \n      ssr: false, \u002F\u002F Client-side only\n      appMiddleware: ['auth']\n    },\n    \n    \u002F\u002F API route'ları — server runtime\n    '\u002Fapi\u002F**': { \n      cors: true,\n      headers: { 'Cache-Control': 'no-cache' }\n    }\n  }\n})\n",[441],{"type":32,"tag":52,"props":442,"children":443},{"__ignoreMap":16},[444,463,470,478,498,518,538,546,554,567,589,617,625,632,640,652,669,678,695,709,718,726,734,743,756,779,798,806,814,823,835,852,877,885,893],{"type":32,"tag":103,"props":445,"children":446},{"class":105,"line":106},[447,451,455,459],{"type":32,"tag":103,"props":448,"children":449},{"style":120},[450],{"type":37,"value":123},{"type":32,"tag":103,"props":452,"children":453},{"style":120},[454],{"type":37,"value":128},{"type":32,"tag":103,"props":456,"children":457},{"style":131},[458],{"type":37,"value":134},{"type":32,"tag":103,"props":460,"children":461},{"style":137},[462],{"type":37,"value":140},{"type":32,"tag":103,"props":464,"children":465},{"class":105,"line":116},[466],{"type":32,"tag":103,"props":467,"children":468},{"style":137},[469],{"type":37,"value":267},{"type":32,"tag":103,"props":471,"children":472},{"class":105,"line":143},[473],{"type":32,"tag":103,"props":474,"children":475},{"style":110},[476],{"type":37,"value":477},"    \u002F\u002F Statik pazarlama sayfaları\n",{"type":32,"tag":103,"props":479,"children":480},{"class":105,"line":152},[481,485,489,493],{"type":32,"tag":103,"props":482,"children":483},{"style":195},[484],{"type":37,"value":276},{"type":32,"tag":103,"props":486,"children":487},{"style":137},[488],{"type":37,"value":281},{"type":32,"tag":103,"props":490,"children":491},{"style":170},[492],{"type":37,"value":173},{"type":32,"tag":103,"props":494,"children":495},{"style":137},[496],{"type":37,"value":497}," },\n",{"type":32,"tag":103,"props":499,"children":500},{"class":105,"line":161},[501,506,510,514],{"type":32,"tag":103,"props":502,"children":503},{"style":195},[504],{"type":37,"value":505},"    '\u002Fabout'",{"type":32,"tag":103,"props":507,"children":508},{"style":137},[509],{"type":37,"value":281},{"type":32,"tag":103,"props":511,"children":512},{"style":170},[513],{"type":37,"value":173},{"type":32,"tag":103,"props":515,"children":516},{"style":137},[517],{"type":37,"value":497},{"type":32,"tag":103,"props":519,"children":520},{"class":105,"line":186},[521,526,530,534],{"type":32,"tag":103,"props":522,"children":523},{"style":195},[524],{"type":37,"value":525},"    '\u002Fcontact'",{"type":32,"tag":103,"props":527,"children":528},{"style":137},[529],{"type":37,"value":281},{"type":32,"tag":103,"props":531,"children":532},{"style":170},[533],{"type":37,"value":173},{"type":32,"tag":103,"props":535,"children":536},{"style":137},[537],{"type":37,"value":497},{"type":32,"tag":103,"props":539,"children":540},{"class":105,"line":211},[541],{"type":32,"tag":103,"props":542,"children":543},{"style":137},[544],{"type":37,"value":545},"    \n",{"type":32,"tag":103,"props":547,"children":548},{"class":105,"line":26},[549],{"type":32,"tag":103,"props":550,"children":551},{"style":110},[552],{"type":37,"value":553},"    \u002F\u002F Ürün kategori sayfaları — ISR\n",{"type":32,"tag":103,"props":555,"children":556},{"class":105,"line":252},[557,562],{"type":32,"tag":103,"props":558,"children":559},{"style":195},[560],{"type":37,"value":561},"    '\u002Fcategory\u002F**'",{"type":32,"tag":103,"props":563,"children":564},{"style":137},[565],{"type":37,"value":566},": { \n",{"type":32,"tag":103,"props":568,"children":569},{"class":105,"line":261},[570,575,580,584],{"type":32,"tag":103,"props":571,"children":572},{"style":137},[573],{"type":37,"value":574},"      swr: ",{"type":32,"tag":103,"props":576,"children":577},{"style":170},[578],{"type":37,"value":579},"1800",{"type":32,"tag":103,"props":581,"children":582},{"style":137},[583],{"type":37,"value":178},{"type":32,"tag":103,"props":585,"children":586},{"style":110},[587],{"type":37,"value":588},"\u002F\u002F 30dk cache\n",{"type":32,"tag":103,"props":590,"children":591},{"class":105,"line":270},[592,597,602,607,612],{"type":32,"tag":103,"props":593,"children":594},{"style":137},[595],{"type":37,"value":596},"      headers: { ",{"type":32,"tag":103,"props":598,"children":599},{"style":195},[600],{"type":37,"value":601},"'Cache-Control'",{"type":32,"tag":103,"props":603,"children":604},{"style":137},[605],{"type":37,"value":606},": ",{"type":32,"tag":103,"props":608,"children":609},{"style":195},[610],{"type":37,"value":611},"'s-maxage=1800'",{"type":32,"tag":103,"props":613,"children":614},{"style":137},[615],{"type":37,"value":616}," }\n",{"type":32,"tag":103,"props":618,"children":619},{"class":105,"line":298},[620],{"type":32,"tag":103,"props":621,"children":622},{"style":137},[623],{"type":37,"value":624},"    },\n",{"type":32,"tag":103,"props":626,"children":627},{"class":105,"line":326},[628],{"type":32,"tag":103,"props":629,"children":630},{"style":137},[631],{"type":37,"value":545},{"type":32,"tag":103,"props":633,"children":634},{"class":105,"line":354},[635],{"type":32,"tag":103,"props":636,"children":637},{"style":110},[638],{"type":37,"value":639},"    \u002F\u002F Ürün detay — ISR + on-demand revalidation\n",{"type":32,"tag":103,"props":641,"children":642},{"class":105,"line":363},[643,648],{"type":32,"tag":103,"props":644,"children":645},{"style":195},[646],{"type":37,"value":647},"    '\u002Fproduct\u002F**'",{"type":32,"tag":103,"props":649,"children":650},{"style":137},[651],{"type":37,"value":566},{"type":32,"tag":103,"props":653,"children":655},{"class":105,"line":654},16,[656,660,664],{"type":32,"tag":103,"props":657,"children":658},{"style":137},[659],{"type":37,"value":574},{"type":32,"tag":103,"props":661,"children":662},{"style":170},[663],{"type":37,"value":314},{"type":32,"tag":103,"props":665,"children":666},{"style":137},[667],{"type":37,"value":668},",\n",{"type":32,"tag":103,"props":670,"children":672},{"class":105,"line":671},17,[673],{"type":32,"tag":103,"props":674,"children":675},{"style":137},[676],{"type":37,"value":677},"      isr: {\n",{"type":32,"tag":103,"props":679,"children":681},{"class":105,"line":680},18,[682,687,691],{"type":32,"tag":103,"props":683,"children":684},{"style":137},[685],{"type":37,"value":686},"        revalidate: ",{"type":32,"tag":103,"props":688,"children":689},{"style":170},[690],{"type":37,"value":314},{"type":32,"tag":103,"props":692,"children":693},{"style":137},[694],{"type":37,"value":668},{"type":32,"tag":103,"props":696,"children":698},{"class":105,"line":697},19,[699,704],{"type":32,"tag":103,"props":700,"children":701},{"style":137},[702],{"type":37,"value":703},"        bypassToken: process.env.",{"type":32,"tag":103,"props":705,"children":706},{"style":170},[707],{"type":37,"value":708},"REVALIDATE_TOKEN\n",{"type":32,"tag":103,"props":710,"children":712},{"class":105,"line":711},20,[713],{"type":32,"tag":103,"props":714,"children":715},{"style":137},[716],{"type":37,"value":717},"      }\n",{"type":32,"tag":103,"props":719,"children":721},{"class":105,"line":720},21,[722],{"type":32,"tag":103,"props":723,"children":724},{"style":137},[725],{"type":37,"value":624},{"type":32,"tag":103,"props":727,"children":729},{"class":105,"line":728},22,[730],{"type":32,"tag":103,"props":731,"children":732},{"style":137},[733],{"type":37,"value":545},{"type":32,"tag":103,"props":735,"children":737},{"class":105,"line":736},23,[738],{"type":32,"tag":103,"props":739,"children":740},{"style":110},[741],{"type":37,"value":742},"    \u002F\u002F Kullanıcı alanı — SPA\n",{"type":32,"tag":103,"props":744,"children":746},{"class":105,"line":745},24,[747,752],{"type":32,"tag":103,"props":748,"children":749},{"style":195},[750],{"type":37,"value":751},"    '\u002Faccount\u002F**'",{"type":32,"tag":103,"props":753,"children":754},{"style":137},[755],{"type":37,"value":566},{"type":32,"tag":103,"props":757,"children":759},{"class":105,"line":758},25,[760,765,770,774],{"type":32,"tag":103,"props":761,"children":762},{"style":137},[763],{"type":37,"value":764},"      ssr: ",{"type":32,"tag":103,"props":766,"children":767},{"style":170},[768],{"type":37,"value":769},"false",{"type":32,"tag":103,"props":771,"children":772},{"style":137},[773],{"type":37,"value":178},{"type":32,"tag":103,"props":775,"children":776},{"style":110},[777],{"type":37,"value":778},"\u002F\u002F Client-side only\n",{"type":32,"tag":103,"props":780,"children":782},{"class":105,"line":781},26,[783,788,793],{"type":32,"tag":103,"props":784,"children":785},{"style":137},[786],{"type":37,"value":787},"      appMiddleware: [",{"type":32,"tag":103,"props":789,"children":790},{"style":195},[791],{"type":37,"value":792},"'auth'",{"type":32,"tag":103,"props":794,"children":795},{"style":137},[796],{"type":37,"value":797},"]\n",{"type":32,"tag":103,"props":799,"children":801},{"class":105,"line":800},27,[802],{"type":32,"tag":103,"props":803,"children":804},{"style":137},[805],{"type":37,"value":624},{"type":32,"tag":103,"props":807,"children":809},{"class":105,"line":808},28,[810],{"type":32,"tag":103,"props":811,"children":812},{"style":137},[813],{"type":37,"value":545},{"type":32,"tag":103,"props":815,"children":817},{"class":105,"line":816},29,[818],{"type":32,"tag":103,"props":819,"children":820},{"style":110},[821],{"type":37,"value":822},"    \u002F\u002F API route'ları — server runtime\n",{"type":32,"tag":103,"props":824,"children":826},{"class":105,"line":825},30,[827,831],{"type":32,"tag":103,"props":828,"children":829},{"style":195},[830],{"type":37,"value":332},{"type":32,"tag":103,"props":832,"children":833},{"style":137},[834],{"type":37,"value":566},{"type":32,"tag":103,"props":836,"children":838},{"class":105,"line":837},31,[839,844,848],{"type":32,"tag":103,"props":840,"children":841},{"style":137},[842],{"type":37,"value":843},"      cors: ",{"type":32,"tag":103,"props":845,"children":846},{"style":170},[847],{"type":37,"value":173},{"type":32,"tag":103,"props":849,"children":850},{"style":137},[851],{"type":37,"value":668},{"type":32,"tag":103,"props":853,"children":855},{"class":105,"line":854},32,[856,860,864,868,873],{"type":32,"tag":103,"props":857,"children":858},{"style":137},[859],{"type":37,"value":596},{"type":32,"tag":103,"props":861,"children":862},{"style":195},[863],{"type":37,"value":601},{"type":32,"tag":103,"props":865,"children":866},{"style":137},[867],{"type":37,"value":606},{"type":32,"tag":103,"props":869,"children":870},{"style":195},[871],{"type":37,"value":872},"'no-cache'",{"type":32,"tag":103,"props":874,"children":875},{"style":137},[876],{"type":37,"value":616},{"type":32,"tag":103,"props":878,"children":880},{"class":105,"line":879},33,[881],{"type":32,"tag":103,"props":882,"children":883},{"style":137},[884],{"type":37,"value":249},{"type":32,"tag":103,"props":886,"children":888},{"class":105,"line":887},34,[889],{"type":32,"tag":103,"props":890,"children":891},{"style":137},[892],{"type":37,"value":360},{"type":32,"tag":103,"props":894,"children":896},{"class":105,"line":895},35,[897],{"type":32,"tag":103,"props":898,"children":899},{"style":137},[900],{"type":37,"value":369},{"type":32,"tag":33,"props":902,"children":903},{},[904],{"type":32,"tag":395,"props":905,"children":906},{},[907],{"type":37,"value":908},"Tradeoff analizi:",{"type":32,"tag":910,"props":911,"children":912},"ul",{},[913,924,934],{"type":32,"tag":914,"props":915,"children":916},"li",{},[917,922],{"type":32,"tag":395,"props":918,"children":919},{},[920],{"type":37,"value":921},"Prerender (statik):",{"type":37,"value":923}," Build süresi artışı, runtime maliyet sıfır. CDN'den doğrudan servis. Core Web Vitals için en iyi (TTFB \u003C50ms). Ancak 10.000+ sayfa build'i 1 saatten uzun sürebilir.",{"type":32,"tag":914,"props":925,"children":926},{},[927,932],{"type":32,"tag":395,"props":928,"children":929},{},[930],{"type":37,"value":931},"SWR (ISR):",{"type":37,"value":933}," İlk request'te render, sonraki request'ler cache'ten. Build süresi düşük, runtime maliyet orta. Stale content riski 1 saate kadar.",{"type":32,"tag":914,"props":935,"children":936},{},[937,942],{"type":32,"tag":395,"props":938,"children":939},{},[940],{"type":37,"value":941},"SSR (runtime):",{"type":37,"value":943}," Her request'te render. Build süresi yok, runtime maliyet yüksek. Personalizasyon için gerekli. TTFB 200-800ms arası (edge serverless).",{"type":32,"tag":33,"props":945,"children":946},{},[947,952],{"type":32,"tag":395,"props":948,"children":949},{},[950],{"type":37,"value":951},"Benchmark:",{"type":37,"value":953}," Yukarıdaki konfigürasyon 1200 ürünlü Shopify Hydrogen projesinde uygulandığında build 22dk → 8dk, Lighthouse Performance skoru 78 → 94, monthly serverless request maliyeti 180$ → 45$ oldu (Vercel Pro tier, Aralık 2025).",{"type":32,"tag":40,"props":955,"children":957},{"id":956},"dynamic-route-prerendering-ve-sitemap-entegrasyonu",[958],{"type":37,"value":959},"Dynamic Route Prerendering ve Sitemap Entegrasyonu",{"type":32,"tag":33,"props":961,"children":962},{},[963,965,970],{"type":37,"value":964},"Dynamic route'ları prerender etmek için route listesini build time'da üretmeniz gerekiyor. Nuxt 3'te iki yöntem: ",{"type":32,"tag":52,"props":966,"children":968},{"className":967},[],[969],{"type":37,"value":73},{"type":37,"value":971}," hook'u veya sitemap.xml crawling. İkinci yöntem daha ölçeklenebilir çünkü sitemap CMS'iniz tarafından otomatik üretilebilir:",{"type":32,"tag":93,"props":973,"children":975},{"className":95,"code":974,"language":97,"meta":16,"style":16},"\u002F\u002F server\u002Froutes\u002Fsitemap.xml.ts\nexport default defineEventHandler(async (event) => {\n  const products = await $fetch('https:\u002F\u002Fcms.example.com\u002Fapi\u002Fproducts')\n  \n  const urls = products.map((p) => ({\n    loc: `https:\u002F\u002Fexample.com\u002Fproduct\u002F${p.slug}`,\n    lastmod: p.updatedAt,\n    changefreq: 'daily',\n    priority: 0.8\n  }))\n  \n  return `\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003Curlset xmlns=\"http:\u002F\u002Fwww.sitemaps.org\u002Fschemas\u002Fsitemap\u002F0.9\">\n  ${urls.map(u => `\n  \u003Curl>\n    \u003Cloc>${u.loc}\u003C\u002Floc>\n    \u003Clastmod>${u.lastmod}\u003C\u002Flastmod>\n    \u003Cchangefreq>${u.changefreq}\u003C\u002Fchangefreq>\n    \u003Cpriority>${u.priority}\u003C\u002Fpriority>\n  \u003C\u002Furl>`).join('')}\n\u003C\u002Furlset>`\n})\n",[976],{"type":32,"tag":52,"props":977,"children":978},{"__ignoreMap":16},[979,987,1039,1081,1089,1137,1173,1181,1198,1211,1219,1226,1239,1247,1287,1295,1321,1347,1373,1399,1436,1444],{"type":32,"tag":103,"props":980,"children":981},{"class":105,"line":106},[982],{"type":32,"tag":103,"props":983,"children":984},{"style":110},[985],{"type":37,"value":986},"\u002F\u002F server\u002Froutes\u002Fsitemap.xml.ts\n",{"type":32,"tag":103,"props":988,"children":989},{"class":105,"line":116},[990,994,998,1003,1008,1013,1018,1024,1029,1034],{"type":32,"tag":103,"props":991,"children":992},{"style":120},[993],{"type":37,"value":123},{"type":32,"tag":103,"props":995,"children":996},{"style":120},[997],{"type":37,"value":128},{"type":32,"tag":103,"props":999,"children":1000},{"style":131},[1001],{"type":37,"value":1002}," defineEventHandler",{"type":32,"tag":103,"props":1004,"children":1005},{"style":137},[1006],{"type":37,"value":1007},"(",{"type":32,"tag":103,"props":1009,"children":1010},{"style":120},[1011],{"type":37,"value":1012},"async",{"type":32,"tag":103,"props":1014,"children":1015},{"style":137},[1016],{"type":37,"value":1017}," (",{"type":32,"tag":103,"props":1019,"children":1021},{"style":1020},"--shiki-default:#FFAB70",[1022],{"type":37,"value":1023},"event",{"type":32,"tag":103,"props":1025,"children":1026},{"style":137},[1027],{"type":37,"value":1028},") ",{"type":32,"tag":103,"props":1030,"children":1031},{"style":120},[1032],{"type":37,"value":1033},"=>",{"type":32,"tag":103,"props":1035,"children":1036},{"style":137},[1037],{"type":37,"value":1038}," {\n",{"type":32,"tag":103,"props":1040,"children":1041},{"class":105,"line":143},[1042,1047,1052,1057,1062,1067,1071,1076],{"type":32,"tag":103,"props":1043,"children":1044},{"style":120},[1045],{"type":37,"value":1046},"  const",{"type":32,"tag":103,"props":1048,"children":1049},{"style":170},[1050],{"type":37,"value":1051}," products",{"type":32,"tag":103,"props":1053,"children":1054},{"style":120},[1055],{"type":37,"value":1056}," =",{"type":32,"tag":103,"props":1058,"children":1059},{"style":120},[1060],{"type":37,"value":1061}," await",{"type":32,"tag":103,"props":1063,"children":1064},{"style":131},[1065],{"type":37,"value":1066}," $fetch",{"type":32,"tag":103,"props":1068,"children":1069},{"style":137},[1070],{"type":37,"value":1007},{"type":32,"tag":103,"props":1072,"children":1073},{"style":195},[1074],{"type":37,"value":1075},"'https:\u002F\u002Fcms.example.com\u002Fapi\u002Fproducts'",{"type":32,"tag":103,"props":1077,"children":1078},{"style":137},[1079],{"type":37,"value":1080},")\n",{"type":32,"tag":103,"props":1082,"children":1083},{"class":105,"line":152},[1084],{"type":32,"tag":103,"props":1085,"children":1086},{"style":137},[1087],{"type":37,"value":1088},"  \n",{"type":32,"tag":103,"props":1090,"children":1091},{"class":105,"line":161},[1092,1096,1101,1105,1110,1115,1120,1124,1128,1132],{"type":32,"tag":103,"props":1093,"children":1094},{"style":120},[1095],{"type":37,"value":1046},{"type":32,"tag":103,"props":1097,"children":1098},{"style":170},[1099],{"type":37,"value":1100}," urls",{"type":32,"tag":103,"props":1102,"children":1103},{"style":120},[1104],{"type":37,"value":1056},{"type":32,"tag":103,"props":1106,"children":1107},{"style":137},[1108],{"type":37,"value":1109}," products.",{"type":32,"tag":103,"props":1111,"children":1112},{"style":131},[1113],{"type":37,"value":1114},"map",{"type":32,"tag":103,"props":1116,"children":1117},{"style":137},[1118],{"type":37,"value":1119},"((",{"type":32,"tag":103,"props":1121,"children":1122},{"style":1020},[1123],{"type":37,"value":33},{"type":32,"tag":103,"props":1125,"children":1126},{"style":137},[1127],{"type":37,"value":1028},{"type":32,"tag":103,"props":1129,"children":1130},{"style":120},[1131],{"type":37,"value":1033},{"type":32,"tag":103,"props":1133,"children":1134},{"style":137},[1135],{"type":37,"value":1136}," ({\n",{"type":32,"tag":103,"props":1138,"children":1139},{"class":105,"line":186},[1140,1145,1150,1154,1159,1164,1169],{"type":32,"tag":103,"props":1141,"children":1142},{"style":137},[1143],{"type":37,"value":1144},"    loc: ",{"type":32,"tag":103,"props":1146,"children":1147},{"style":195},[1148],{"type":37,"value":1149},"`https:\u002F\u002Fexample.com\u002Fproduct\u002F${",{"type":32,"tag":103,"props":1151,"children":1152},{"style":137},[1153],{"type":37,"value":33},{"type":32,"tag":103,"props":1155,"children":1156},{"style":195},[1157],{"type":37,"value":1158},".",{"type":32,"tag":103,"props":1160,"children":1161},{"style":137},[1162],{"type":37,"value":1163},"slug",{"type":32,"tag":103,"props":1165,"children":1166},{"style":195},[1167],{"type":37,"value":1168},"}`",{"type":32,"tag":103,"props":1170,"children":1171},{"style":137},[1172],{"type":37,"value":668},{"type":32,"tag":103,"props":1174,"children":1175},{"class":105,"line":211},[1176],{"type":32,"tag":103,"props":1177,"children":1178},{"style":137},[1179],{"type":37,"value":1180},"    lastmod: p.updatedAt,\n",{"type":32,"tag":103,"props":1182,"children":1183},{"class":105,"line":26},[1184,1189,1194],{"type":32,"tag":103,"props":1185,"children":1186},{"style":137},[1187],{"type":37,"value":1188},"    changefreq: ",{"type":32,"tag":103,"props":1190,"children":1191},{"style":195},[1192],{"type":37,"value":1193},"'daily'",{"type":32,"tag":103,"props":1195,"children":1196},{"style":137},[1197],{"type":37,"value":668},{"type":32,"tag":103,"props":1199,"children":1200},{"class":105,"line":252},[1201,1206],{"type":32,"tag":103,"props":1202,"children":1203},{"style":137},[1204],{"type":37,"value":1205},"    priority: ",{"type":32,"tag":103,"props":1207,"children":1208},{"style":170},[1209],{"type":37,"value":1210},"0.8\n",{"type":32,"tag":103,"props":1212,"children":1213},{"class":105,"line":261},[1214],{"type":32,"tag":103,"props":1215,"children":1216},{"style":137},[1217],{"type":37,"value":1218},"  }))\n",{"type":32,"tag":103,"props":1220,"children":1221},{"class":105,"line":270},[1222],{"type":32,"tag":103,"props":1223,"children":1224},{"style":137},[1225],{"type":37,"value":1088},{"type":32,"tag":103,"props":1227,"children":1228},{"class":105,"line":298},[1229,1234],{"type":32,"tag":103,"props":1230,"children":1231},{"style":120},[1232],{"type":37,"value":1233},"  return",{"type":32,"tag":103,"props":1235,"children":1236},{"style":195},[1237],{"type":37,"value":1238}," `\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",{"type":32,"tag":103,"props":1240,"children":1241},{"class":105,"line":326},[1242],{"type":32,"tag":103,"props":1243,"children":1244},{"style":195},[1245],{"type":37,"value":1246},"\u003Curlset xmlns=\"http:\u002F\u002Fwww.sitemaps.org\u002Fschemas\u002Fsitemap\u002F0.9\">\n",{"type":32,"tag":103,"props":1248,"children":1249},{"class":105,"line":354},[1250,1255,1260,1264,1268,1272,1277,1282],{"type":32,"tag":103,"props":1251,"children":1252},{"style":195},[1253],{"type":37,"value":1254},"  ${",{"type":32,"tag":103,"props":1256,"children":1257},{"style":137},[1258],{"type":37,"value":1259},"urls",{"type":32,"tag":103,"props":1261,"children":1262},{"style":195},[1263],{"type":37,"value":1158},{"type":32,"tag":103,"props":1265,"children":1266},{"style":131},[1267],{"type":37,"value":1114},{"type":32,"tag":103,"props":1269,"children":1270},{"style":195},[1271],{"type":37,"value":1007},{"type":32,"tag":103,"props":1273,"children":1274},{"style":170},[1275],{"type":37,"value":1276},"u",{"type":32,"tag":103,"props":1278,"children":1279},{"style":120},[1280],{"type":37,"value":1281}," =>",{"type":32,"tag":103,"props":1283,"children":1284},{"style":195},[1285],{"type":37,"value":1286}," `\n",{"type":32,"tag":103,"props":1288,"children":1289},{"class":105,"line":363},[1290],{"type":32,"tag":103,"props":1291,"children":1292},{"style":195},[1293],{"type":37,"value":1294},"  \u003Curl>\n",{"type":32,"tag":103,"props":1296,"children":1297},{"class":105,"line":654},[1298,1303,1307,1311,1316],{"type":32,"tag":103,"props":1299,"children":1300},{"style":195},[1301],{"type":37,"value":1302},"    \u003Cloc>${",{"type":32,"tag":103,"props":1304,"children":1305},{"style":137},[1306],{"type":37,"value":1276},{"type":32,"tag":103,"props":1308,"children":1309},{"style":195},[1310],{"type":37,"value":1158},{"type":32,"tag":103,"props":1312,"children":1313},{"style":137},[1314],{"type":37,"value":1315},"loc",{"type":32,"tag":103,"props":1317,"children":1318},{"style":195},[1319],{"type":37,"value":1320},"}\u003C\u002Floc>\n",{"type":32,"tag":103,"props":1322,"children":1323},{"class":105,"line":671},[1324,1329,1333,1337,1342],{"type":32,"tag":103,"props":1325,"children":1326},{"style":195},[1327],{"type":37,"value":1328},"    \u003Clastmod>${",{"type":32,"tag":103,"props":1330,"children":1331},{"style":137},[1332],{"type":37,"value":1276},{"type":32,"tag":103,"props":1334,"children":1335},{"style":195},[1336],{"type":37,"value":1158},{"type":32,"tag":103,"props":1338,"children":1339},{"style":137},[1340],{"type":37,"value":1341},"lastmod",{"type":32,"tag":103,"props":1343,"children":1344},{"style":195},[1345],{"type":37,"value":1346},"}\u003C\u002Flastmod>\n",{"type":32,"tag":103,"props":1348,"children":1349},{"class":105,"line":680},[1350,1355,1359,1363,1368],{"type":32,"tag":103,"props":1351,"children":1352},{"style":195},[1353],{"type":37,"value":1354},"    \u003Cchangefreq>${",{"type":32,"tag":103,"props":1356,"children":1357},{"style":137},[1358],{"type":37,"value":1276},{"type":32,"tag":103,"props":1360,"children":1361},{"style":195},[1362],{"type":37,"value":1158},{"type":32,"tag":103,"props":1364,"children":1365},{"style":137},[1366],{"type":37,"value":1367},"changefreq",{"type":32,"tag":103,"props":1369,"children":1370},{"style":195},[1371],{"type":37,"value":1372},"}\u003C\u002Fchangefreq>\n",{"type":32,"tag":103,"props":1374,"children":1375},{"class":105,"line":697},[1376,1381,1385,1389,1394],{"type":32,"tag":103,"props":1377,"children":1378},{"style":195},[1379],{"type":37,"value":1380},"    \u003Cpriority>${",{"type":32,"tag":103,"props":1382,"children":1383},{"style":137},[1384],{"type":37,"value":1276},{"type":32,"tag":103,"props":1386,"children":1387},{"style":195},[1388],{"type":37,"value":1158},{"type":32,"tag":103,"props":1390,"children":1391},{"style":137},[1392],{"type":37,"value":1393},"priority",{"type":32,"tag":103,"props":1395,"children":1396},{"style":195},[1397],{"type":37,"value":1398},"}\u003C\u002Fpriority>\n",{"type":32,"tag":103,"props":1400,"children":1401},{"class":105,"line":711},[1402,1407,1412,1417,1421,1426,1431],{"type":32,"tag":103,"props":1403,"children":1404},{"style":195},[1405],{"type":37,"value":1406},"  \u003C\u002Furl>`",{"type":32,"tag":103,"props":1408,"children":1409},{"style":195},[1410],{"type":37,"value":1411},").",{"type":32,"tag":103,"props":1413,"children":1414},{"style":131},[1415],{"type":37,"value":1416},"join",{"type":32,"tag":103,"props":1418,"children":1419},{"style":195},[1420],{"type":37,"value":1007},{"type":32,"tag":103,"props":1422,"children":1423},{"style":195},[1424],{"type":37,"value":1425},"''",{"type":32,"tag":103,"props":1427,"children":1428},{"style":195},[1429],{"type":37,"value":1430},")",{"type":32,"tag":103,"props":1432,"children":1433},{"style":195},[1434],{"type":37,"value":1435},"}\n",{"type":32,"tag":103,"props":1437,"children":1438},{"class":105,"line":720},[1439],{"type":32,"tag":103,"props":1440,"children":1441},{"style":195},[1442],{"type":37,"value":1443},"\u003C\u002Furlset>`\n",{"type":32,"tag":103,"props":1445,"children":1446},{"class":105,"line":728},[1447],{"type":32,"tag":103,"props":1448,"children":1449},{"style":137},[1450],{"type":37,"value":369},{"type":32,"tag":33,"props":1452,"children":1453},{},[1454],{"type":37,"value":1455},"Build config'de sitemap'i başlangıç noktası yapın:",{"type":32,"tag":93,"props":1457,"children":1459},{"className":95,"code":1458,"language":97,"meta":16,"style":16},"export default defineNuxtConfig({\n  nitro: {\n    prerender: {\n      crawlLinks: true,\n      routes: ['\u002Fsitemap.xml']\n    }\n  }\n})\n",[1460],{"type":32,"tag":52,"props":1461,"children":1462},{"__ignoreMap":16},[1463,1482,1489,1496,1511,1526,1533,1540],{"type":32,"tag":103,"props":1464,"children":1465},{"class":105,"line":106},[1466,1470,1474,1478],{"type":32,"tag":103,"props":1467,"children":1468},{"style":120},[1469],{"type":37,"value":123},{"type":32,"tag":103,"props":1471,"children":1472},{"style":120},[1473],{"type":37,"value":128},{"type":32,"tag":103,"props":1475,"children":1476},{"style":131},[1477],{"type":37,"value":134},{"type":32,"tag":103,"props":1479,"children":1480},{"style":137},[1481],{"type":37,"value":140},{"type":32,"tag":103,"props":1483,"children":1484},{"class":105,"line":116},[1485],{"type":32,"tag":103,"props":1486,"children":1487},{"style":137},[1488],{"type":37,"value":149},{"type":32,"tag":103,"props":1490,"children":1491},{"class":105,"line":143},[1492],{"type":32,"tag":103,"props":1493,"children":1494},{"style":137},[1495],{"type":37,"value":158},{"type":32,"tag":103,"props":1497,"children":1498},{"class":105,"line":152},[1499,1503,1507],{"type":32,"tag":103,"props":1500,"children":1501},{"style":137},[1502],{"type":37,"value":167},{"type":32,"tag":103,"props":1504,"children":1505},{"style":170},[1506],{"type":37,"value":173},{"type":32,"tag":103,"props":1508,"children":1509},{"style":137},[1510],{"type":37,"value":668},{"type":32,"tag":103,"props":1512,"children":1513},{"class":105,"line":161},[1514,1518,1522],{"type":32,"tag":103,"props":1515,"children":1516},{"style":137},[1517],{"type":37,"value":192},{"type":32,"tag":103,"props":1519,"children":1520},{"style":195},[1521],{"type":37,"value":198},{"type":32,"tag":103,"props":1523,"children":1524},{"style":137},[1525],{"type":37,"value":797},{"type":32,"tag":103,"props":1527,"children":1528},{"class":105,"line":186},[1529],{"type":32,"tag":103,"props":1530,"children":1531},{"style":137},[1532],{"type":37,"value":249},{"type":32,"tag":103,"props":1534,"children":1535},{"class":105,"line":211},[1536],{"type":32,"tag":103,"props":1537,"children":1538},{"style":137},[1539],{"type":37,"value":360},{"type":32,"tag":103,"props":1541,"children":1542},{"class":105,"line":26},[1543],{"type":32,"tag":103,"props":1544,"children":1545},{"style":137},[1546],{"type":37,"value":369},{"type":32,"tag":33,"props":1548,"children":1549},{},[1550,1552,1558,1559,1565],{"type":37,"value":1551},"Nitro sitemap.xml'i parse edip içindeki tüm URL'leri tarıyor. Bu yöntem 50.000+ ürünlü sitelerde bile çalışıyor çünkü sitemap pagination yapabiliyorsunuz (",{"type":32,"tag":52,"props":1553,"children":1555},{"className":1554},[],[1556],{"type":37,"value":1557},"sitemap-1.xml",{"type":37,"value":178},{"type":32,"tag":52,"props":1560,"children":1562},{"className":1561},[],[1563],{"type":37,"value":1564},"sitemap-2.xml",{"type":37,"value":1411},{"type":32,"tag":33,"props":1567,"children":1568},{},[1569,1574,1576,1582],{"type":32,"tag":395,"props":1570,"children":1571},{},[1572],{"type":37,"value":1573},"Dikkat:",{"type":37,"value":1575}," Sitemap route'u kendisi de prerender edilmeli, yoksa build time'da fetch edilemiyor. Yukarıdaki örnekte ",{"type":32,"tag":52,"props":1577,"children":1579},{"className":1578},[],[1580],{"type":37,"value":1581},"server\u002Froutes\u002F",{"type":37,"value":1583}," altında tanımlı, bu route'lar build'de çalışır.",{"type":32,"tag":40,"props":1585,"children":1587},{"id":1586},"build-optimization-paralel-prerender-ve-chunk-strategy",[1588],{"type":37,"value":1589},"Build Optimization: Paralel Prerender ve Chunk Strategy",{"type":32,"tag":33,"props":1591,"children":1592},{},[1593,1595,1601],{"type":37,"value":1594},"Nitro varsayılan olarak 1 concurrency ile prerender yapıyor — CPU bound işlemler seri çalışıyor. ",{"type":32,"tag":52,"props":1596,"children":1598},{"className":1597},[],[1599],{"type":37,"value":1600},"concurrency",{"type":37,"value":1602}," parametresini artırarak build süresini doğrusal olarak düşürebilirsiniz:",{"type":32,"tag":93,"props":1604,"children":1606},{"className":95,"code":1605,"language":97,"meta":16,"style":16},"export default defineNuxtConfig({\n  nitro: {\n    prerender: {\n      concurrency: 10, \u002F\u002F 10 paralel worker\n      interval: 0, \u002F\u002F Worker'lar arası delay yok\n      failOnError: false \u002F\u002F Bir route fail olunca tüm build dursun mu\n    }\n  }\n})\n",[1607],{"type":32,"tag":52,"props":1608,"children":1609},{"__ignoreMap":16},[1610,1629,1636,1643,1665,1687,1704,1711,1718],{"type":32,"tag":103,"props":1611,"children":1612},{"class":105,"line":106},[1613,1617,1621,1625],{"type":32,"tag":103,"props":1614,"children":1615},{"style":120},[1616],{"type":37,"value":123},{"type":32,"tag":103,"props":1618,"children":1619},{"style":120},[1620],{"type":37,"value":128},{"type":32,"tag":103,"props":1622,"children":1623},{"style":131},[1624],{"type":37,"value":134},{"type":32,"tag":103,"props":1626,"children":1627},{"style":137},[1628],{"type":37,"value":140},{"type":32,"tag":103,"props":1630,"children":1631},{"class":105,"line":116},[1632],{"type":32,"tag":103,"props":1633,"children":1634},{"style":137},[1635],{"type":37,"value":149},{"type":32,"tag":103,"props":1637,"children":1638},{"class":105,"line":143},[1639],{"type":32,"tag":103,"props":1640,"children":1641},{"style":137},[1642],{"type":37,"value":158},{"type":32,"tag":103,"props":1644,"children":1645},{"class":105,"line":152},[1646,1651,1656,1660],{"type":32,"tag":103,"props":1647,"children":1648},{"style":137},[1649],{"type":37,"value":1650},"      concurrency: ",{"type":32,"tag":103,"props":1652,"children":1653},{"style":170},[1654],{"type":37,"value":1655},"10",{"type":32,"tag":103,"props":1657,"children":1658},{"style":137},[1659],{"type":37,"value":178},{"type":32,"tag":103,"props":1661,"children":1662},{"style":110},[1663],{"type":37,"value":1664},"\u002F\u002F 10 paralel worker\n",{"type":32,"tag":103,"props":1666,"children":1667},{"class":105,"line":161},[1668,1673,1678,1682],{"type":32,"tag":103,"props":1669,"children":1670},{"style":137},[1671],{"type":37,"value":1672},"      interval: ",{"type":32,"tag":103,"props":1674,"children":1675},{"style":170},[1676],{"type":37,"value":1677},"0",{"type":32,"tag":103,"props":1679,"children":1680},{"style":137},[1681],{"type":37,"value":178},{"type":32,"tag":103,"props":1683,"children":1684},{"style":110},[1685],{"type":37,"value":1686},"\u002F\u002F Worker'lar arası delay yok\n",{"type":32,"tag":103,"props":1688,"children":1689},{"class":105,"line":186},[1690,1695,1699],{"type":32,"tag":103,"props":1691,"children":1692},{"style":137},[1693],{"type":37,"value":1694},"      failOnError: ",{"type":32,"tag":103,"props":1696,"children":1697},{"style":170},[1698],{"type":37,"value":769},{"type":32,"tag":103,"props":1700,"children":1701},{"style":110},[1702],{"type":37,"value":1703}," \u002F\u002F Bir route fail olunca tüm build dursun mu\n",{"type":32,"tag":103,"props":1705,"children":1706},{"class":105,"line":211},[1707],{"type":32,"tag":103,"props":1708,"children":1709},{"style":137},[1710],{"type":37,"value":249},{"type":32,"tag":103,"props":1712,"children":1713},{"class":105,"line":26},[1714],{"type":32,"tag":103,"props":1715,"children":1716},{"style":137},[1717],{"type":37,"value":360},{"type":32,"tag":103,"props":1719,"children":1720},{"class":105,"line":252},[1721],{"type":32,"tag":103,"props":1722,"children":1723},{"style":137},[1724],{"type":37,"value":369},{"type":32,"tag":33,"props":1726,"children":1727},{},[1728,1732,1734,1740,1742,1748],{"type":32,"tag":395,"props":1729,"children":1730},{},[1731],{"type":37,"value":951},{"type":37,"value":1733}," 8 CPU GitHub Actions runner'da ",{"type":32,"tag":52,"props":1735,"children":1737},{"className":1736},[],[1738],{"type":37,"value":1739},"concurrency: 1",{"type":37,"value":1741}," ile 14dk süren build, ",{"type":32,"tag":52,"props":1743,"children":1745},{"className":1744},[],[1746],{"type":37,"value":1747},"concurrency: 8",{"type":37,"value":1749}," ile 3.2dk'ya düştü (800 sayfa, ortalama 1.2s\u002Fsayfa). Ancak concurrency > CPU count genelde kazanç getirmiyor çünkü Vue SSR bundle render işlemi CPU-intensive.",{"type":32,"tag":33,"props":1751,"children":1752},{},[1753,1755,1761],{"type":37,"value":1754},"İkinci optimizasyon: code splitting. Nuxt 3 varsayılan olarak route-based splitting yapıyor ama büyük component'ler bundle'ı şişirebilir. ",{"type":32,"tag":52,"props":1756,"children":1758},{"className":1757},[],[1759],{"type":37,"value":1760},"vite.build.rollupOptions",{"type":37,"value":1762}," ile manual chunk tanımlayın:",{"type":32,"tag":93,"props":1764,"children":1766},{"className":95,"code":1765,"language":97,"meta":16,"style":16},"export default defineNuxtConfig({\n  vite: {\n    build: {\n      rollupOptions: {\n        output: {\n          manualChunks: {\n            'vendor': ['vue', '@vueuse\u002Fcore'],\n            'charts': ['chart.js', 'vue-chartjs'],\n            'markdown': ['marked', 'highlight.js']\n          }\n        }\n      }\n    }\n  }\n})\n",[1767],{"type":32,"tag":52,"props":1768,"children":1769},{"__ignoreMap":16},[1770,1789,1797,1805,1813,1821,1829,1861,1891,1921,1929,1937,1944,1951,1958],{"type":32,"tag":103,"props":1771,"children":1772},{"class":105,"line":106},[1773,1777,1781,1785],{"type":32,"tag":103,"props":1774,"children":1775},{"style":120},[1776],{"type":37,"value":123},{"type":32,"tag":103,"props":1778,"children":1779},{"style":120},[1780],{"type":37,"value":128},{"type":32,"tag":103,"props":1782,"children":1783},{"style":131},[1784],{"type":37,"value":134},{"type":32,"tag":103,"props":1786,"children":1787},{"style":137},[1788],{"type":37,"value":140},{"type":32,"tag":103,"props":1790,"children":1791},{"class":105,"line":116},[1792],{"type":32,"tag":103,"props":1793,"children":1794},{"style":137},[1795],{"type":37,"value":1796},"  vite: {\n",{"type":32,"tag":103,"props":1798,"children":1799},{"class":105,"line":143},[1800],{"type":32,"tag":103,"props":1801,"children":1802},{"style":137},[1803],{"type":37,"value":1804},"    build: {\n",{"type":32,"tag":103,"props":1806,"children":1807},{"class":105,"line":152},[1808],{"type":32,"tag":103,"props":1809,"children":1810},{"style":137},[1811],{"type":37,"value":1812},"      rollupOptions: {\n",{"type":32,"tag":103,"props":1814,"children":1815},{"class":105,"line":161},[1816],{"type":32,"tag":103,"props":1817,"children":1818},{"style":137},[1819],{"type":37,"value":1820},"        output: {\n",{"type":32,"tag":103,"props":1822,"children":1823},{"class":105,"line":186},[1824],{"type":32,"tag":103,"props":1825,"children":1826},{"style":137},[1827],{"type":37,"value":1828},"          manualChunks: {\n",{"type":32,"tag":103,"props":1830,"children":1831},{"class":105,"line":211},[1832,1837,1842,1847,1851,1856],{"type":32,"tag":103,"props":1833,"children":1834},{"style":195},[1835],{"type":37,"value":1836},"            'vendor'",{"type":32,"tag":103,"props":1838,"children":1839},{"style":137},[1840],{"type":37,"value":1841},": [",{"type":32,"tag":103,"props":1843,"children":1844},{"style":195},[1845],{"type":37,"value":1846},"'vue'",{"type":32,"tag":103,"props":1848,"children":1849},{"style":137},[1850],{"type":37,"value":178},{"type":32,"tag":103,"props":1852,"children":1853},{"style":195},[1854],{"type":37,"value":1855},"'@vueuse\u002Fcore'",{"type":32,"tag":103,"props":1857,"children":1858},{"style":137},[1859],{"type":37,"value":1860},"],\n",{"type":32,"tag":103,"props":1862,"children":1863},{"class":105,"line":26},[1864,1869,1873,1878,1882,1887],{"type":32,"tag":103,"props":1865,"children":1866},{"style":195},[1867],{"type":37,"value":1868},"            'charts'",{"type":32,"tag":103,"props":1870,"children":1871},{"style":137},[1872],{"type":37,"value":1841},{"type":32,"tag":103,"props":1874,"children":1875},{"style":195},[1876],{"type":37,"value":1877},"'chart.js'",{"type":32,"tag":103,"props":1879,"children":1880},{"style":137},[1881],{"type":37,"value":178},{"type":32,"tag":103,"props":1883,"children":1884},{"style":195},[1885],{"type":37,"value":1886},"'vue-chartjs'",{"type":32,"tag":103,"props":1888,"children":1889},{"style":137},[1890],{"type":37,"value":1860},{"type":32,"tag":103,"props":1892,"children":1893},{"class":105,"line":252},[1894,1899,1903,1908,1912,1917],{"type":32,"tag":103,"props":1895,"children":1896},{"style":195},[1897],{"type":37,"value":1898},"            'markdown'",{"type":32,"tag":103,"props":1900,"children":1901},{"style":137},[1902],{"type":37,"value":1841},{"type":32,"tag":103,"props":1904,"children":1905},{"style":195},[1906],{"type":37,"value":1907},"'marked'",{"type":32,"tag":103,"props":1909,"children":1910},{"style":137},[1911],{"type":37,"value":178},{"type":32,"tag":103,"props":1913,"children":1914},{"style":195},[1915],{"type":37,"value":1916},"'highlight.js'",{"type":32,"tag":103,"props":1918,"children":1919},{"style":137},[1920],{"type":37,"value":797},{"type":32,"tag":103,"props":1922,"children":1923},{"class":105,"line":261},[1924],{"type":32,"tag":103,"props":1925,"children":1926},{"style":137},[1927],{"type":37,"value":1928},"          }\n",{"type":32,"tag":103,"props":1930,"children":1931},{"class":105,"line":270},[1932],{"type":32,"tag":103,"props":1933,"children":1934},{"style":137},[1935],{"type":37,"value":1936},"        }\n",{"type":32,"tag":103,"props":1938,"children":1939},{"class":105,"line":298},[1940],{"type":32,"tag":103,"props":1941,"children":1942},{"style":137},[1943],{"type":37,"value":717},{"type":32,"tag":103,"props":1945,"children":1946},{"class":105,"line":326},[1947],{"type":32,"tag":103,"props":1948,"children":1949},{"style":137},[1950],{"type":37,"value":249},{"type":32,"tag":103,"props":1952,"children":1953},{"class":105,"line":354},[1954],{"type":32,"tag":103,"props":1955,"children":1956},{"style":137},[1957],{"type":37,"value":360},{"type":32,"tag":103,"props":1959,"children":1960},{"class":105,"line":363},[1961],{"type":32,"tag":103,"props":1962,"children":1963},{"style":137},[1964],{"type":37,"value":369},{"type":32,"tag":33,"props":1966,"children":1967},{},[1968,1970,1979],{"type":37,"value":1969},"Bu strateji özellikle ",{"type":32,"tag":1971,"props":1972,"children":1976},"a",{"href":1973,"rel":1974},"https:\u002F\u002Fwww.roibase.com.tr\u002Ftr\u002Fheadless",[1975],"nofollow",[1977],{"type":37,"value":1978},"headless commerce",{"type":37,"value":1980}," projelerinde kritik — Shopify SDK, CMS client, analytics library ayrı chunk'lara alınırsa route-specific bundle size %40-50 küçülüyor.",{"type":32,"tag":33,"props":1982,"children":1983},{},[1984,1988],{"type":32,"tag":395,"props":1985,"children":1986},{},[1987],{"type":37,"value":399},{"type":37,"value":1989}," 2.1MB initial bundle, manual chunk sonrası 680KB (gzip). Route-specific chunk'lar 120-200KB arası. LCP 3.4s → 1.8s (4G throttled).",{"type":32,"tag":40,"props":1991,"children":1993},{"id":1992},"incremental-static-regeneration-ve-cache-invalidation",[1994],{"type":37,"value":1995},"Incremental Static Regeneration ve Cache Invalidation",{"type":32,"tag":33,"props":1997,"children":1998},{},[1999,2001,2007],{"type":37,"value":2000},"Nuxt 3'ün ISR implementasyonu Next.js'ten farklı — serverless function yerine edge cache kullanıyor. ",{"type":32,"tag":52,"props":2002,"children":2004},{"className":2003},[],[2005],{"type":37,"value":2006},"swr",{"type":37,"value":2008}," parametresi cache TTL'ini belirliyor, ancak on-demand revalidation için custom endpoint yazmanız gerekiyor:",{"type":32,"tag":93,"props":2010,"children":2012},{"className":95,"code":2011,"language":97,"meta":16,"style":16},"\u002F\u002F server\u002Fapi\u002Frevalidate.post.ts\nexport default defineEventHandler(async (event) => {\n  const body = await readBody(event)\n  const { token, paths } = body\n  \n  if (token !== process.env.REVALIDATE_TOKEN) {\n    throw createError({ statusCode: 401 })\n  }\n  \n  \u002F\u002F Nitro cache'i temizle\n  const storage = useStorage('cache')\n  for (const path of paths) {\n    await storage.removeItem(path)\n  }\n  \n  return { revalidated: paths }\n})\n",[2013],{"type":32,"tag":52,"props":2014,"children":2015},{"__ignoreMap":16},[2016,2024,2067,2097,2137,2144,2177,2205,2212,2219,2227,2261,2293,2316,2323,2330,2342],{"type":32,"tag":103,"props":2017,"children":2018},{"class":105,"line":106},[2019],{"type":32,"tag":103,"props":2020,"children":2021},{"style":110},[2022],{"type":37,"value":2023},"\u002F\u002F server\u002Fapi\u002Frevalidate.post.ts\n",{"type":32,"tag":103,"props":2025,"children":2026},{"class":105,"line":116},[2027,2031,2035,2039,2043,2047,2051,2055,2059,2063],{"type":32,"tag":103,"props":2028,"children":2029},{"style":120},[2030],{"type":37,"value":123},{"type":32,"tag":103,"props":2032,"children":2033},{"style":120},[2034],{"type":37,"value":128},{"type":32,"tag":103,"props":2036,"children":2037},{"style":131},[2038],{"type":37,"value":1002},{"type":32,"tag":103,"props":2040,"children":2041},{"style":137},[2042],{"type":37,"value":1007},{"type":32,"tag":103,"props":2044,"children":2045},{"style":120},[2046],{"type":37,"value":1012},{"type":32,"tag":103,"props":2048,"children":2049},{"style":137},[2050],{"type":37,"value":1017},{"type":32,"tag":103,"props":2052,"children":2053},{"style":1020},[2054],{"type":37,"value":1023},{"type":32,"tag":103,"props":2056,"children":2057},{"style":137},[2058],{"type":37,"value":1028},{"type":32,"tag":103,"props":2060,"children":2061},{"style":120},[2062],{"type":37,"value":1033},{"type":32,"tag":103,"props":2064,"children":2065},{"style":137},[2066],{"type":37,"value":1038},{"type":32,"tag":103,"props":2068,"children":2069},{"class":105,"line":143},[2070,2074,2079,2083,2087,2092],{"type":32,"tag":103,"props":2071,"children":2072},{"style":120},[2073],{"type":37,"value":1046},{"type":32,"tag":103,"props":2075,"children":2076},{"style":170},[2077],{"type":37,"value":2078}," body",{"type":32,"tag":103,"props":2080,"children":2081},{"style":120},[2082],{"type":37,"value":1056},{"type":32,"tag":103,"props":2084,"children":2085},{"style":120},[2086],{"type":37,"value":1061},{"type":32,"tag":103,"props":2088,"children":2089},{"style":131},[2090],{"type":37,"value":2091}," readBody",{"type":32,"tag":103,"props":2093,"children":2094},{"style":137},[2095],{"type":37,"value":2096},"(event)\n",{"type":32,"tag":103,"props":2098,"children":2099},{"class":105,"line":152},[2100,2104,2109,2114,2118,2123,2127,2132],{"type":32,"tag":103,"props":2101,"children":2102},{"style":120},[2103],{"type":37,"value":1046},{"type":32,"tag":103,"props":2105,"children":2106},{"style":137},[2107],{"type":37,"value":2108}," { ",{"type":32,"tag":103,"props":2110,"children":2111},{"style":170},[2112],{"type":37,"value":2113},"token",{"type":32,"tag":103,"props":2115,"children":2116},{"style":137},[2117],{"type":37,"value":178},{"type":32,"tag":103,"props":2119,"children":2120},{"style":170},[2121],{"type":37,"value":2122},"paths",{"type":32,"tag":103,"props":2124,"children":2125},{"style":137},[2126],{"type":37,"value":346},{"type":32,"tag":103,"props":2128,"children":2129},{"style":120},[2130],{"type":37,"value":2131},"=",{"type":32,"tag":103,"props":2133,"children":2134},{"style":137},[2135],{"type":37,"value":2136}," body\n",{"type":32,"tag":103,"props":2138,"children":2139},{"class":105,"line":161},[2140],{"type":32,"tag":103,"props":2141,"children":2142},{"style":137},[2143],{"type":37,"value":1088},{"type":32,"tag":103,"props":2145,"children":2146},{"class":105,"line":186},[2147,2152,2157,2162,2167,2172],{"type":32,"tag":103,"props":2148,"children":2149},{"style":120},[2150],{"type":37,"value":2151},"  if",{"type":32,"tag":103,"props":2153,"children":2154},{"style":137},[2155],{"type":37,"value":2156}," (token ",{"type":32,"tag":103,"props":2158,"children":2159},{"style":120},[2160],{"type":37,"value":2161},"!==",{"type":32,"tag":103,"props":2163,"children":2164},{"style":137},[2165],{"type":37,"value":2166}," process.env.",{"type":32,"tag":103,"props":2168,"children":2169},{"style":170},[2170],{"type":37,"value":2171},"REVALIDATE_TOKEN",{"type":32,"tag":103,"props":2173,"children":2174},{"style":137},[2175],{"type":37,"value":2176},") {\n",{"type":32,"tag":103,"props":2178,"children":2179},{"class":105,"line":211},[2180,2185,2190,2195,2200],{"type":32,"tag":103,"props":2181,"children":2182},{"style":120},[2183],{"type":37,"value":2184},"    throw",{"type":32,"tag":103,"props":2186,"children":2187},{"style":131},[2188],{"type":37,"value":2189}," createError",{"type":32,"tag":103,"props":2191,"children":2192},{"style":137},[2193],{"type":37,"value":2194},"({ statusCode: ",{"type":32,"tag":103,"props":2196,"children":2197},{"style":170},[2198],{"type":37,"value":2199},"401",{"type":32,"tag":103,"props":2201,"children":2202},{"style":137},[2203],{"type":37,"value":2204}," })\n",{"type":32,"tag":103,"props":2206,"children":2207},{"class":105,"line":26},[2208],{"type":32,"tag":103,"props":2209,"children":2210},{"style":137},[2211],{"type":37,"value":360},{"type":32,"tag":103,"props":2213,"children":2214},{"class":105,"line":252},[2215],{"type":32,"tag":103,"props":2216,"children":2217},{"style":137},[2218],{"type":37,"value":1088},{"type":32,"tag":103,"props":2220,"children":2221},{"class":105,"line":261},[2222],{"type":32,"tag":103,"props":2223,"children":2224},{"style":110},[2225],{"type":37,"value":2226},"  \u002F\u002F Nitro cache'i temizle\n",{"type":32,"tag":103,"props":2228,"children":2229},{"class":105,"line":270},[2230,2234,2239,2243,2248,2252,2257],{"type":32,"tag":103,"props":2231,"children":2232},{"style":120},[2233],{"type":37,"value":1046},{"type":32,"tag":103,"props":2235,"children":2236},{"style":170},[2237],{"type":37,"value":2238}," storage",{"type":32,"tag":103,"props":2240,"children":2241},{"style":120},[2242],{"type":37,"value":1056},{"type":32,"tag":103,"props":2244,"children":2245},{"style":131},[2246],{"type":37,"value":2247}," useStorage",{"type":32,"tag":103,"props":2249,"children":2250},{"style":137},[2251],{"type":37,"value":1007},{"type":32,"tag":103,"props":2253,"children":2254},{"style":195},[2255],{"type":37,"value":2256},"'cache'",{"type":32,"tag":103,"props":2258,"children":2259},{"style":137},[2260],{"type":37,"value":1080},{"type":32,"tag":103,"props":2262,"children":2263},{"class":105,"line":298},[2264,2269,2273,2278,2283,2288],{"type":32,"tag":103,"props":2265,"children":2266},{"style":120},[2267],{"type":37,"value":2268},"  for",{"type":32,"tag":103,"props":2270,"children":2271},{"style":137},[2272],{"type":37,"value":1017},{"type":32,"tag":103,"props":2274,"children":2275},{"style":120},[2276],{"type":37,"value":2277},"const",{"type":32,"tag":103,"props":2279,"children":2280},{"style":170},[2281],{"type":37,"value":2282}," path",{"type":32,"tag":103,"props":2284,"children":2285},{"style":120},[2286],{"type":37,"value":2287}," of",{"type":32,"tag":103,"props":2289,"children":2290},{"style":137},[2291],{"type":37,"value":2292}," paths) {\n",{"type":32,"tag":103,"props":2294,"children":2295},{"class":105,"line":326},[2296,2301,2306,2311],{"type":32,"tag":103,"props":2297,"children":2298},{"style":120},[2299],{"type":37,"value":2300},"    await",{"type":32,"tag":103,"props":2302,"children":2303},{"style":137},[2304],{"type":37,"value":2305}," storage.",{"type":32,"tag":103,"props":2307,"children":2308},{"style":131},[2309],{"type":37,"value":2310},"removeItem",{"type":32,"tag":103,"props":2312,"children":2313},{"style":137},[2314],{"type":37,"value":2315},"(path)\n",{"type":32,"tag":103,"props":2317,"children":2318},{"class":105,"line":354},[2319],{"type":32,"tag":103,"props":2320,"children":2321},{"style":137},[2322],{"type":37,"value":360},{"type":32,"tag":103,"props":2324,"children":2325},{"class":105,"line":363},[2326],{"type":32,"tag":103,"props":2327,"children":2328},{"style":137},[2329],{"type":37,"value":1088},{"type":32,"tag":103,"props":2331,"children":2332},{"class":105,"line":654},[2333,2337],{"type":32,"tag":103,"props":2334,"children":2335},{"style":120},[2336],{"type":37,"value":1233},{"type":32,"tag":103,"props":2338,"children":2339},{"style":137},[2340],{"type":37,"value":2341}," { revalidated: paths }\n",{"type":32,"tag":103,"props":2343,"children":2344},{"class":105,"line":671},[2345],{"type":32,"tag":103,"props":2346,"children":2347},{"style":137},[2348],{"type":37,"value":369},{"type":32,"tag":33,"props":2350,"children":2351},{},[2352],{"type":37,"value":2353},"Shopify webhook'undan tetikleme:",{"type":32,"tag":93,"props":2355,"children":2357},{"className":95,"code":2356,"language":97,"meta":16,"style":16},"\u002F\u002F CMS tarafında ürün güncellenince:\nawait fetch('https:\u002F\u002Fexample.com\u002Fapi\u002Frevalidate', {\n  method: 'POST',\n  body: JSON.stringify({\n    token: 'xxx',\n    paths: ['\u002Fproduct\u002Fexample-slug', '\u002Fcategory\u002Felectronics']\n  })\n})\n",[2358],{"type":32,"tag":52,"props":2359,"children":2360},{"__ignoreMap":16},[2361,2369,2396,2413,2439,2456,2482,2490],{"type":32,"tag":103,"props":2362,"children":2363},{"class":105,"line":106},[2364],{"type":32,"tag":103,"props":2365,"children":2366},{"style":110},[2367],{"type":37,"value":2368},"\u002F\u002F CMS tarafında ürün güncellenince:\n",{"type":32,"tag":103,"props":2370,"children":2371},{"class":105,"line":116},[2372,2377,2382,2386,2391],{"type":32,"tag":103,"props":2373,"children":2374},{"style":120},[2375],{"type":37,"value":2376},"await",{"type":32,"tag":103,"props":2378,"children":2379},{"style":131},[2380],{"type":37,"value":2381}," fetch",{"type":32,"tag":103,"props":2383,"children":2384},{"style":137},[2385],{"type":37,"value":1007},{"type":32,"tag":103,"props":2387,"children":2388},{"style":195},[2389],{"type":37,"value":2390},"'https:\u002F\u002Fexample.com\u002Fapi\u002Frevalidate'",{"type":32,"tag":103,"props":2392,"children":2393},{"style":137},[2394],{"type":37,"value":2395},", {\n",{"type":32,"tag":103,"props":2397,"children":2398},{"class":105,"line":143},[2399,2404,2409],{"type":32,"tag":103,"props":2400,"children":2401},{"style":137},[2402],{"type":37,"value":2403},"  method: ",{"type":32,"tag":103,"props":2405,"children":2406},{"style":195},[2407],{"type":37,"value":2408},"'POST'",{"type":32,"tag":103,"props":2410,"children":2411},{"style":137},[2412],{"type":37,"value":668},{"type":32,"tag":103,"props":2414,"children":2415},{"class":105,"line":152},[2416,2421,2426,2430,2435],{"type":32,"tag":103,"props":2417,"children":2418},{"style":137},[2419],{"type":37,"value":2420},"  body: ",{"type":32,"tag":103,"props":2422,"children":2423},{"style":170},[2424],{"type":37,"value":2425},"JSON",{"type":32,"tag":103,"props":2427,"children":2428},{"style":137},[2429],{"type":37,"value":1158},{"type":32,"tag":103,"props":2431,"children":2432},{"style":131},[2433],{"type":37,"value":2434},"stringify",{"type":32,"tag":103,"props":2436,"children":2437},{"style":137},[2438],{"type":37,"value":140},{"type":32,"tag":103,"props":2440,"children":2441},{"class":105,"line":161},[2442,2447,2452],{"type":32,"tag":103,"props":2443,"children":2444},{"style":137},[2445],{"type":37,"value":2446},"    token: ",{"type":32,"tag":103,"props":2448,"children":2449},{"style":195},[2450],{"type":37,"value":2451},"'xxx'",{"type":32,"tag":103,"props":2453,"children":2454},{"style":137},[2455],{"type":37,"value":668},{"type":32,"tag":103,"props":2457,"children":2458},{"class":105,"line":186},[2459,2464,2469,2473,2478],{"type":32,"tag":103,"props":2460,"children":2461},{"style":137},[2462],{"type":37,"value":2463},"    paths: [",{"type":32,"tag":103,"props":2465,"children":2466},{"style":195},[2467],{"type":37,"value":2468},"'\u002Fproduct\u002Fexample-slug'",{"type":32,"tag":103,"props":2470,"children":2471},{"style":137},[2472],{"type":37,"value":178},{"type":32,"tag":103,"props":2474,"children":2475},{"style":195},[2476],{"type":37,"value":2477},"'\u002Fcategory\u002Felectronics'",{"type":32,"tag":103,"props":2479,"children":2480},{"style":137},[2481],{"type":37,"value":797},{"type":32,"tag":103,"props":2483,"children":2484},{"class":105,"line":211},[2485],{"type":32,"tag":103,"props":2486,"children":2487},{"style":137},[2488],{"type":37,"value":2489},"  })\n",{"type":32,"tag":103,"props":2491,"children":2492},{"class":105,"line":26},[2493],{"type":32,"tag":103,"props":2494,"children":2495},{"style":137},[2496],{"type":37,"value":369},{"type":32,"tag":33,"props":2498,"children":2499},{},[2500],{"type":37,"value":2501},"Bu pattern, full rebuild yapmadan stale content'i güncelliyor. 5000 ürünlü bir sitede günde 50 ürün değişiyorsa, ISR + on-demand revalidation maliyeti full rebuild'den 12x daha düşük (Vercel edge request pricing, Ocak 2026 verisi).",{"type":32,"tag":40,"props":2503,"children":2505},{"id":2504},"sonuç",[2506],{"type":37,"value":2507},"Sonuç",{"type":32,"tag":33,"props":2509,"children":2510},{},[2511],{"type":37,"value":2512},"Nuxt 3'ün SSG mimarisi hybrid rendering ile build süresini optimize etmenizi sağlıyor. Route rules ile granüler kontrol, sitemap-based crawling ile dynamic route prerendering, ISR ile runtime cache yönetimi kombine edildiğinde 10.000+ sayfalı sitelerde bile 10 dakika altı build süresi elde edilebilir. Kritik kararlar: hangi route'ları statik, hangilerini ISR, hangilerini runtime yapacağınız — bu karar Core Web Vitals, maliyet ve content freshness dengesini belirliyor. Sitemap.xml otomasyonu ve parallel prerender ölçeklenebilirliğin anahtarı.",{"type":32,"tag":2514,"props":2515,"children":2516},"style",{},[2517],{"type":37,"value":2518},"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":143,"depth":143,"links":2520},[2521,2522,2523,2524,2525,2526],{"id":42,"depth":116,"text":45},{"id":412,"depth":116,"text":415},{"id":956,"depth":116,"text":959},{"id":1586,"depth":116,"text":1589},{"id":1992,"depth":116,"text":1995},{"id":2504,"depth":116,"text":2507},"markdown","content:tr:tech:nuxt-3-ssg-prerender-stratejileri-ve-route-rules-ile-build-optimizasyo.md","content","tr\u002Ftech\u002Fnuxt-3-ssg-prerender-stratejileri-ve-route-rules-ile-build-optimizasyo.md","tr\u002Ftech\u002Fnuxt-3-ssg-prerender-stratejileri-ve-route-rules-ile-build-optimizasyo","md",1783260302210]