[{"data":1,"prerenderedAt":1537},["ShallowReactive",2],{"article-alternates":3,"article-\u002Ftr\u002Ftech\u002Fnuxt-3-cloudflare-pages-10s-lcpden-2sye":13},{"i18nKey":4,"paths":5},"tech-001-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimierung","\u002Fen\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimization","\u002Fes\u002Ftech\u002Fnuxt3-cloudflare-pages-lcp-optimizacion","\u002Ffr\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimisation","\u002Fit\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-ottimizzazione","\u002Fru\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimization","\u002Ftr\u002Ftech\u002Fnuxt-3-cloudflare-pages-10s-lcpden-2sye",{"_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":1531,"_id":1532,"_source":1533,"_file":1534,"_stem":1535,"_extension":1536},"tech",false,"","Nuxt 3 + Cloudflare Pages: 10s LCP'den 2s'ye","Self-hosted fonts, lazy hydration, content-visibility ve edge caching ile LCP'yi 80% düşürdük. Gerçek benchmark, kod örnekleri ve tradeoff'lar.","2026-05-07",[21,22,23,24,25],"nuxt3","cloudflare-pages","web-performance","lcp","edge-caching",8,"Roibase",{"type":29,"children":30,"toc":1520},"root",[31,39,46,51,97,102,108,146,549,559,571,592,700,713,799,816,822,851,995,1006,1015,1021,1034,1196,1207,1224,1230,1235,1365,1381,1387,1412,1422,1439,1455,1461,1466,1510,1515],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Google'ın Core Web Vitals güncellemesi sonrası LCP (Largest Contentful Paint) 2.5 saniyenin altında olmalı yoksa hem organik sıralama hem dönüşüm oranı düşüyor. Bir e-ticaret sitesini Nuxt 3 + Cloudflare Pages stack'ine taşıdığımızda ilk deploy sonrası LCP 10.2 saniyede kaldı. Self-hosted font stratejisi, selective hydration, CSS content-visibility ve edge caching kombinasyonuyla 2.1 saniyeye indirdik. Aşağıda adım adım hangi değişiklik hangi kazancı getirdiğini, tradeoff'ları ve kodu paylaşıyoruz.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"problemi-tanımlamak-10s-lcpnin-anatomisi",[44],{"type":37,"value":45},"Problemi tanımlamak: 10s LCP'nin anatomisi",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"İlk CrUX raporunda median LCP 10.2s, TBT (Total Blocking Time) 2190ms çıktı. Chrome DevTools Lighthouse profil analizi şunları gösterdi:",{"type":32,"tag":52,"props":53,"children":54},"ul",{},[55,67,77,87],{"type":32,"tag":56,"props":57,"children":58},"li",{},[59,65],{"type":32,"tag":60,"props":61,"children":62},"strong",{},[63],{"type":37,"value":64},"Font yükleme:",{"type":37,"value":66}," Google Fonts CDN'den 3 font ailesi, render-blocking",{"type":32,"tag":56,"props":68,"children":69},{},[70,75],{"type":32,"tag":60,"props":71,"children":72},{},[73],{"type":37,"value":74},"JavaScript hydration:",{"type":37,"value":76}," 420kB bundle, tüm sayfa hydrate ediliyor",{"type":32,"tag":56,"props":78,"children":79},{},[80,85],{"type":32,"tag":60,"props":81,"children":82},{},[83],{"type":37,"value":84},"Above-the-fold görsel:",{"type":37,"value":86}," 1.2MB JPEG, lazy load yok",{"type":32,"tag":56,"props":88,"children":89},{},[90,95],{"type":32,"tag":60,"props":91,"children":92},{},[93],{"type":37,"value":94},"Cloudflare cache:",{"type":37,"value":96}," SSR response cache'lenmiyor, her istek origin'e düşüyor",{"type":32,"tag":33,"props":98,"children":99},{},[100],{"type":37,"value":101},"Baseline ölçüm: PageSpeed Insights mobil skoru 34\u002F100. Desktop 62\u002F100. Bu sayılar Shopify Liquid'den Nuxt 3'e geçiş sonrası — framework değişikliği tek başına performans kazancı sağlamıyor, mimari optimizasyon gerekiyor.",{"type":32,"tag":40,"props":103,"children":105},{"id":104},"self-hosted-font-preload-stratejisi",[106],{"type":37,"value":107},"Self-hosted font + preload stratejisi",{"type":32,"tag":33,"props":109,"children":110},{},[111,113,120,122,128,130,136,138,144],{"type":37,"value":112},"Google Fonts servisinden aynı font dosyalarını ",{"type":32,"tag":114,"props":115,"children":117},"code",{"className":116},[],[118],{"type":37,"value":119},"public\u002Ffonts\u002F",{"type":37,"value":121}," dizinine indirip ",{"type":32,"tag":114,"props":123,"children":125},{"className":124},[],[126],{"type":37,"value":127},"@font-face",{"type":37,"value":129}," tanımını ",{"type":32,"tag":114,"props":131,"children":133},{"className":132},[],[134],{"type":37,"value":135},"app.vue",{"type":37,"value":137},"'ya taşıdık. Kritik fark: ",{"type":32,"tag":114,"props":139,"children":141},{"className":140},[],[142],{"type":37,"value":143},"\u003Clink rel=\"preload\">",{"type":37,"value":145}," ile ilk HTML response içinde font dosyalarını request ediyoruz, CSS parse edilmeden önce.",{"type":32,"tag":147,"props":148,"children":152},"pre",{"className":149,"code":150,"language":151,"meta":16,"style":16},"language-vue shiki shiki-themes github-dark","\u003C!-- app.vue -->\n\u003Cscript setup>\nuseHead({\n  link: [\n    {\n      rel: 'preload',\n      href: '\u002Ffonts\u002Finter-var.woff2',\n      as: 'font',\n      type: 'font\u002Fwoff2',\n      crossorigin: 'anonymous'\n    }\n  ]\n})\n\u003C\u002Fscript>\n\n\u003Cstyle>\n@font-face {\n  font-family: 'Inter';\n  src: url('\u002Ffonts\u002Finter-var.woff2') format('woff2');\n  font-display: swap;\n  font-weight: 100 900;\n}\n\u003C\u002Fstyle>\n","vue",[153],{"type":32,"tag":114,"props":154,"children":155},{"__ignoreMap":16},[156,168,195,209,218,227,247,265,282,300,314,323,332,341,358,368,385,399,424,475,497,524,533],{"type":32,"tag":157,"props":158,"children":161},"span",{"class":159,"line":160},"line",1,[162],{"type":32,"tag":157,"props":163,"children":165},{"style":164},"--shiki-default:#6A737D",[166],{"type":37,"value":167},"\u003C!-- app.vue -->\n",{"type":32,"tag":157,"props":169,"children":171},{"class":159,"line":170},2,[172,178,184,190],{"type":32,"tag":157,"props":173,"children":175},{"style":174},"--shiki-default:#E1E4E8",[176],{"type":37,"value":177},"\u003C",{"type":32,"tag":157,"props":179,"children":181},{"style":180},"--shiki-default:#85E89D",[182],{"type":37,"value":183},"script",{"type":32,"tag":157,"props":185,"children":187},{"style":186},"--shiki-default:#B392F0",[188],{"type":37,"value":189}," setup",{"type":32,"tag":157,"props":191,"children":192},{"style":174},[193],{"type":37,"value":194},">\n",{"type":32,"tag":157,"props":196,"children":198},{"class":159,"line":197},3,[199,204],{"type":32,"tag":157,"props":200,"children":201},{"style":186},[202],{"type":37,"value":203},"useHead",{"type":32,"tag":157,"props":205,"children":206},{"style":174},[207],{"type":37,"value":208},"({\n",{"type":32,"tag":157,"props":210,"children":212},{"class":159,"line":211},4,[213],{"type":32,"tag":157,"props":214,"children":215},{"style":174},[216],{"type":37,"value":217},"  link: [\n",{"type":32,"tag":157,"props":219,"children":221},{"class":159,"line":220},5,[222],{"type":32,"tag":157,"props":223,"children":224},{"style":174},[225],{"type":37,"value":226},"    {\n",{"type":32,"tag":157,"props":228,"children":230},{"class":159,"line":229},6,[231,236,242],{"type":32,"tag":157,"props":232,"children":233},{"style":174},[234],{"type":37,"value":235},"      rel: ",{"type":32,"tag":157,"props":237,"children":239},{"style":238},"--shiki-default:#9ECBFF",[240],{"type":37,"value":241},"'preload'",{"type":32,"tag":157,"props":243,"children":244},{"style":174},[245],{"type":37,"value":246},",\n",{"type":32,"tag":157,"props":248,"children":250},{"class":159,"line":249},7,[251,256,261],{"type":32,"tag":157,"props":252,"children":253},{"style":174},[254],{"type":37,"value":255},"      href: ",{"type":32,"tag":157,"props":257,"children":258},{"style":238},[259],{"type":37,"value":260},"'\u002Ffonts\u002Finter-var.woff2'",{"type":32,"tag":157,"props":262,"children":263},{"style":174},[264],{"type":37,"value":246},{"type":32,"tag":157,"props":266,"children":267},{"class":159,"line":26},[268,273,278],{"type":32,"tag":157,"props":269,"children":270},{"style":174},[271],{"type":37,"value":272},"      as: ",{"type":32,"tag":157,"props":274,"children":275},{"style":238},[276],{"type":37,"value":277},"'font'",{"type":32,"tag":157,"props":279,"children":280},{"style":174},[281],{"type":37,"value":246},{"type":32,"tag":157,"props":283,"children":285},{"class":159,"line":284},9,[286,291,296],{"type":32,"tag":157,"props":287,"children":288},{"style":174},[289],{"type":37,"value":290},"      type: ",{"type":32,"tag":157,"props":292,"children":293},{"style":238},[294],{"type":37,"value":295},"'font\u002Fwoff2'",{"type":32,"tag":157,"props":297,"children":298},{"style":174},[299],{"type":37,"value":246},{"type":32,"tag":157,"props":301,"children":303},{"class":159,"line":302},10,[304,309],{"type":32,"tag":157,"props":305,"children":306},{"style":174},[307],{"type":37,"value":308},"      crossorigin: ",{"type":32,"tag":157,"props":310,"children":311},{"style":238},[312],{"type":37,"value":313},"'anonymous'\n",{"type":32,"tag":157,"props":315,"children":317},{"class":159,"line":316},11,[318],{"type":32,"tag":157,"props":319,"children":320},{"style":174},[321],{"type":37,"value":322},"    }\n",{"type":32,"tag":157,"props":324,"children":326},{"class":159,"line":325},12,[327],{"type":32,"tag":157,"props":328,"children":329},{"style":174},[330],{"type":37,"value":331},"  ]\n",{"type":32,"tag":157,"props":333,"children":335},{"class":159,"line":334},13,[336],{"type":32,"tag":157,"props":337,"children":338},{"style":174},[339],{"type":37,"value":340},"})\n",{"type":32,"tag":157,"props":342,"children":344},{"class":159,"line":343},14,[345,350,354],{"type":32,"tag":157,"props":346,"children":347},{"style":174},[348],{"type":37,"value":349},"\u003C\u002F",{"type":32,"tag":157,"props":351,"children":352},{"style":180},[353],{"type":37,"value":183},{"type":32,"tag":157,"props":355,"children":356},{"style":174},[357],{"type":37,"value":194},{"type":32,"tag":157,"props":359,"children":361},{"class":159,"line":360},15,[362],{"type":32,"tag":157,"props":363,"children":365},{"emptyLinePlaceholder":364},true,[366],{"type":37,"value":367},"\n",{"type":32,"tag":157,"props":369,"children":371},{"class":159,"line":370},16,[372,376,381],{"type":32,"tag":157,"props":373,"children":374},{"style":174},[375],{"type":37,"value":177},{"type":32,"tag":157,"props":377,"children":378},{"style":180},[379],{"type":37,"value":380},"style",{"type":32,"tag":157,"props":382,"children":383},{"style":174},[384],{"type":37,"value":194},{"type":32,"tag":157,"props":386,"children":388},{"class":159,"line":387},17,[389,394],{"type":32,"tag":157,"props":390,"children":392},{"style":391},"--shiki-default:#F97583",[393],{"type":37,"value":127},{"type":32,"tag":157,"props":395,"children":396},{"style":174},[397],{"type":37,"value":398}," {\n",{"type":32,"tag":157,"props":400,"children":402},{"class":159,"line":401},18,[403,409,414,419],{"type":32,"tag":157,"props":404,"children":406},{"style":405},"--shiki-default:#79B8FF",[407],{"type":37,"value":408},"  font-family",{"type":32,"tag":157,"props":410,"children":411},{"style":174},[412],{"type":37,"value":413},": ",{"type":32,"tag":157,"props":415,"children":416},{"style":238},[417],{"type":37,"value":418},"'Inter'",{"type":32,"tag":157,"props":420,"children":421},{"style":174},[422],{"type":37,"value":423},";\n",{"type":32,"tag":157,"props":425,"children":427},{"class":159,"line":426},19,[428,433,437,442,447,451,456,461,465,470],{"type":32,"tag":157,"props":429,"children":430},{"style":405},[431],{"type":37,"value":432},"  src",{"type":32,"tag":157,"props":434,"children":435},{"style":174},[436],{"type":37,"value":413},{"type":32,"tag":157,"props":438,"children":439},{"style":405},[440],{"type":37,"value":441},"url",{"type":32,"tag":157,"props":443,"children":444},{"style":174},[445],{"type":37,"value":446},"(",{"type":32,"tag":157,"props":448,"children":449},{"style":238},[450],{"type":37,"value":260},{"type":32,"tag":157,"props":452,"children":453},{"style":174},[454],{"type":37,"value":455},") ",{"type":32,"tag":157,"props":457,"children":458},{"style":405},[459],{"type":37,"value":460},"format",{"type":32,"tag":157,"props":462,"children":463},{"style":174},[464],{"type":37,"value":446},{"type":32,"tag":157,"props":466,"children":467},{"style":238},[468],{"type":37,"value":469},"'woff2'",{"type":32,"tag":157,"props":471,"children":472},{"style":174},[473],{"type":37,"value":474},");\n",{"type":32,"tag":157,"props":476,"children":478},{"class":159,"line":477},20,[479,484,488,493],{"type":32,"tag":157,"props":480,"children":481},{"style":405},[482],{"type":37,"value":483},"  font-display",{"type":32,"tag":157,"props":485,"children":486},{"style":174},[487],{"type":37,"value":413},{"type":32,"tag":157,"props":489,"children":490},{"style":405},[491],{"type":37,"value":492},"swap",{"type":32,"tag":157,"props":494,"children":495},{"style":174},[496],{"type":37,"value":423},{"type":32,"tag":157,"props":498,"children":500},{"class":159,"line":499},21,[501,506,510,515,520],{"type":32,"tag":157,"props":502,"children":503},{"style":405},[504],{"type":37,"value":505},"  font-weight",{"type":32,"tag":157,"props":507,"children":508},{"style":174},[509],{"type":37,"value":413},{"type":32,"tag":157,"props":511,"children":512},{"style":405},[513],{"type":37,"value":514},"100",{"type":32,"tag":157,"props":516,"children":517},{"style":405},[518],{"type":37,"value":519}," 900",{"type":32,"tag":157,"props":521,"children":522},{"style":174},[523],{"type":37,"value":423},{"type":32,"tag":157,"props":525,"children":527},{"class":159,"line":526},22,[528],{"type":32,"tag":157,"props":529,"children":530},{"style":174},[531],{"type":37,"value":532},"}\n",{"type":32,"tag":157,"props":534,"children":536},{"class":159,"line":535},23,[537,541,545],{"type":32,"tag":157,"props":538,"children":539},{"style":174},[540],{"type":37,"value":349},{"type":32,"tag":157,"props":542,"children":543},{"style":180},[544],{"type":37,"value":380},{"type":32,"tag":157,"props":546,"children":547},{"style":174},[548],{"type":37,"value":194},{"type":32,"tag":33,"props":550,"children":551},{},[552,557],{"type":32,"tag":60,"props":553,"children":554},{},[555],{"type":37,"value":556},"Kazanç:",{"type":37,"value":558}," LCP 10.2s → 7.8s (2.4s düşüş). Font yükleme render-blocking'den çıktı, FOIT (Flash of Invisible Text) süresi 1200ms → 180ms. Tradeoff: font dosyaları artık kendi CDN'imizde, versiyonlamayı manuel yönetmek gerekiyor (biz Cloudflare R2 bucket + Cache-Control header ile çözdük).",{"type":32,"tag":40,"props":560,"children":562},{"id":561},"selective-hydration-content-visibility",[563,565],{"type":37,"value":564},"Selective hydration + ",{"type":32,"tag":114,"props":566,"children":568},{"className":567},[],[569],{"type":37,"value":570},"content-visibility",{"type":32,"tag":33,"props":572,"children":573},{},[574,576,582,584,590],{"type":37,"value":575},"Nuxt 3'ün varsayılan davranışı tüm component'leri hydrate etmek. Ancak above-the-fold'da olmayan component'ler (footer, yorum bölümü, ilgili ürünler) kullanıcı scroll etmeden hydrate olmalarına gerek yok. ",{"type":32,"tag":114,"props":577,"children":579},{"className":578},[],[580],{"type":37,"value":581},"@nuxt\u002Flazy-hydration",{"type":37,"value":583}," modülü ile bu component'leri ",{"type":32,"tag":114,"props":585,"children":587},{"className":586},[],[588],{"type":37,"value":589},"LazyHydrate",{"type":37,"value":591}," wrapper'ına aldık.",{"type":32,"tag":147,"props":593,"children":595},{"className":149,"code":594,"language":151,"meta":16,"style":16},"\u003Ctemplate>\n  \u003CLazyHydrate when-visible>\n    \u003CProductRecommendations :product-id=\"productId\" \u002F>\n  \u003C\u002FLazyHydrate>\n\u003C\u002Ftemplate>\n",[596],{"type":32,"tag":114,"props":597,"children":598},{"__ignoreMap":16},[599,615,636,669,685],{"type":32,"tag":157,"props":600,"children":601},{"class":159,"line":160},[602,606,611],{"type":32,"tag":157,"props":603,"children":604},{"style":174},[605],{"type":37,"value":177},{"type":32,"tag":157,"props":607,"children":608},{"style":180},[609],{"type":37,"value":610},"template",{"type":32,"tag":157,"props":612,"children":613},{"style":174},[614],{"type":37,"value":194},{"type":32,"tag":157,"props":616,"children":617},{"class":159,"line":170},[618,623,627,632],{"type":32,"tag":157,"props":619,"children":620},{"style":174},[621],{"type":37,"value":622},"  \u003C",{"type":32,"tag":157,"props":624,"children":625},{"style":180},[626],{"type":37,"value":589},{"type":32,"tag":157,"props":628,"children":629},{"style":186},[630],{"type":37,"value":631}," when-visible",{"type":32,"tag":157,"props":633,"children":634},{"style":174},[635],{"type":37,"value":194},{"type":32,"tag":157,"props":637,"children":638},{"class":159,"line":197},[639,644,649,654,659,664],{"type":32,"tag":157,"props":640,"children":641},{"style":174},[642],{"type":37,"value":643},"    \u003C",{"type":32,"tag":157,"props":645,"children":646},{"style":180},[647],{"type":37,"value":648},"ProductRecommendations",{"type":32,"tag":157,"props":650,"children":651},{"style":186},[652],{"type":37,"value":653}," :product-id",{"type":32,"tag":157,"props":655,"children":656},{"style":174},[657],{"type":37,"value":658},"=",{"type":32,"tag":157,"props":660,"children":661},{"style":238},[662],{"type":37,"value":663},"\"productId\"",{"type":32,"tag":157,"props":665,"children":666},{"style":174},[667],{"type":37,"value":668}," \u002F>\n",{"type":32,"tag":157,"props":670,"children":671},{"class":159,"line":211},[672,677,681],{"type":32,"tag":157,"props":673,"children":674},{"style":174},[675],{"type":37,"value":676},"  \u003C\u002F",{"type":32,"tag":157,"props":678,"children":679},{"style":180},[680],{"type":37,"value":589},{"type":32,"tag":157,"props":682,"children":683},{"style":174},[684],{"type":37,"value":194},{"type":32,"tag":157,"props":686,"children":687},{"class":159,"line":220},[688,692,696],{"type":32,"tag":157,"props":689,"children":690},{"style":174},[691],{"type":37,"value":349},{"type":32,"tag":157,"props":693,"children":694},{"style":180},[695],{"type":37,"value":610},{"type":32,"tag":157,"props":697,"children":698},{"style":174},[699],{"type":37,"value":194},{"type":32,"tag":33,"props":701,"children":702},{},[703,705,711],{"type":37,"value":704},"CSS tarafında ",{"type":32,"tag":114,"props":706,"children":708},{"className":707},[],[709],{"type":37,"value":710},"content-visibility: auto",{"type":37,"value":712}," ile tarayıcıya \"bu element viewport'ta değilse render hesaplaması yapma\" sinyali verdik:",{"type":32,"tag":147,"props":714,"children":718},{"className":715,"code":716,"language":717,"meta":16,"style":16},"language-css shiki shiki-themes github-dark",".product-recommendations {\n  content-visibility: auto;\n  contain-intrinsic-size: 0 500px; \u002F* placeholder height *\u002F\n}\n","css",[719],{"type":32,"tag":114,"props":720,"children":721},{"__ignoreMap":16},[722,734,755,792],{"type":32,"tag":157,"props":723,"children":724},{"class":159,"line":160},[725,730],{"type":32,"tag":157,"props":726,"children":727},{"style":186},[728],{"type":37,"value":729},".product-recommendations",{"type":32,"tag":157,"props":731,"children":732},{"style":174},[733],{"type":37,"value":398},{"type":32,"tag":157,"props":735,"children":736},{"class":159,"line":170},[737,742,746,751],{"type":32,"tag":157,"props":738,"children":739},{"style":405},[740],{"type":37,"value":741},"  content-visibility",{"type":32,"tag":157,"props":743,"children":744},{"style":174},[745],{"type":37,"value":413},{"type":32,"tag":157,"props":747,"children":748},{"style":405},[749],{"type":37,"value":750},"auto",{"type":32,"tag":157,"props":752,"children":753},{"style":174},[754],{"type":37,"value":423},{"type":32,"tag":157,"props":756,"children":757},{"class":159,"line":197},[758,763,767,772,777,782,787],{"type":32,"tag":157,"props":759,"children":760},{"style":405},[761],{"type":37,"value":762},"  contain-intrinsic-size",{"type":32,"tag":157,"props":764,"children":765},{"style":174},[766],{"type":37,"value":413},{"type":32,"tag":157,"props":768,"children":769},{"style":405},[770],{"type":37,"value":771},"0",{"type":32,"tag":157,"props":773,"children":774},{"style":405},[775],{"type":37,"value":776}," 500",{"type":32,"tag":157,"props":778,"children":779},{"style":391},[780],{"type":37,"value":781},"px",{"type":32,"tag":157,"props":783,"children":784},{"style":174},[785],{"type":37,"value":786},"; ",{"type":32,"tag":157,"props":788,"children":789},{"style":164},[790],{"type":37,"value":791},"\u002F* placeholder height *\u002F\n",{"type":32,"tag":157,"props":793,"children":794},{"class":159,"line":211},[795],{"type":32,"tag":157,"props":796,"children":797},{"style":174},[798],{"type":37,"value":532},{"type":32,"tag":33,"props":800,"children":801},{},[802,806,808,814],{"type":32,"tag":60,"props":803,"children":804},{},[805],{"type":37,"value":556},{"type":37,"value":807}," TBT 2190ms → 420ms, LCP 7.8s → 4.1s. İlk yüklenen JS bundle 420kB → 180kB (brotli-compressed). Tradeoff: ",{"type":32,"tag":114,"props":809,"children":811},{"className":810},[],[812],{"type":37,"value":813},"when-visible",{"type":37,"value":815}," intersection observer kullanıyor, polyfill gerekliliği IE11 gibi eski browser'larda var (biz modern browser hedeflediğimiz için sorun olmadı).",{"type":32,"tag":40,"props":817,"children":819},{"id":818},"edge-caching-isr-hibrit-yaklaşım",[820],{"type":37,"value":821},"Edge caching + ISR hibrit yaklaşım",{"type":32,"tag":33,"props":823,"children":824},{},[825,827,833,835,841,843,849],{"type":37,"value":826},"Cloudflare Pages varsayılan olarak static dosyaları cache ediyor ama SSR endpoint'leri (",{"type":32,"tag":114,"props":828,"children":830},{"className":829},[],[831],{"type":37,"value":832},"\u002F_nuxt\u002F...",{"type":37,"value":834}," dışında) cache'lemiyor. ",{"type":32,"tag":114,"props":836,"children":838},{"className":837},[],[839],{"type":37,"value":840},"nuxt.config.ts",{"type":37,"value":842}," içinde ",{"type":32,"tag":114,"props":844,"children":846},{"className":845},[],[847],{"type":37,"value":848},"routeRules",{"type":37,"value":850}," ile hangi path'lerin ne kadar süre cache'leneceğini tanımladık:",{"type":32,"tag":147,"props":852,"children":856},{"className":853,"code":854,"language":855,"meta":16,"style":16},"language-ts shiki shiki-themes github-dark","\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  routeRules: {\n    '\u002F': { swr: 3600 }, \u002F\u002F homepage 1h stale-while-revalidate\n    '\u002Furun\u002F**': { swr: 1800 }, \u002F\u002F product pages 30m\n    '\u002Fkategori\u002F**': { static: true } \u002F\u002F category pages build-time static\n  }\n})\n","ts",[857],{"type":32,"tag":114,"props":858,"children":859},{"__ignoreMap":16},[860,868,890,898,926,952,980,988],{"type":32,"tag":157,"props":861,"children":862},{"class":159,"line":160},[863],{"type":32,"tag":157,"props":864,"children":865},{"style":164},[866],{"type":37,"value":867},"\u002F\u002F nuxt.config.ts\n",{"type":32,"tag":157,"props":869,"children":870},{"class":159,"line":170},[871,876,881,886],{"type":32,"tag":157,"props":872,"children":873},{"style":391},[874],{"type":37,"value":875},"export",{"type":32,"tag":157,"props":877,"children":878},{"style":391},[879],{"type":37,"value":880}," default",{"type":32,"tag":157,"props":882,"children":883},{"style":186},[884],{"type":37,"value":885}," defineNuxtConfig",{"type":32,"tag":157,"props":887,"children":888},{"style":174},[889],{"type":37,"value":208},{"type":32,"tag":157,"props":891,"children":892},{"class":159,"line":197},[893],{"type":32,"tag":157,"props":894,"children":895},{"style":174},[896],{"type":37,"value":897},"  routeRules: {\n",{"type":32,"tag":157,"props":899,"children":900},{"class":159,"line":211},[901,906,911,916,921],{"type":32,"tag":157,"props":902,"children":903},{"style":238},[904],{"type":37,"value":905},"    '\u002F'",{"type":32,"tag":157,"props":907,"children":908},{"style":174},[909],{"type":37,"value":910},": { swr: ",{"type":32,"tag":157,"props":912,"children":913},{"style":405},[914],{"type":37,"value":915},"3600",{"type":32,"tag":157,"props":917,"children":918},{"style":174},[919],{"type":37,"value":920}," }, ",{"type":32,"tag":157,"props":922,"children":923},{"style":164},[924],{"type":37,"value":925},"\u002F\u002F homepage 1h stale-while-revalidate\n",{"type":32,"tag":157,"props":927,"children":928},{"class":159,"line":220},[929,934,938,943,947],{"type":32,"tag":157,"props":930,"children":931},{"style":238},[932],{"type":37,"value":933},"    '\u002Furun\u002F**'",{"type":32,"tag":157,"props":935,"children":936},{"style":174},[937],{"type":37,"value":910},{"type":32,"tag":157,"props":939,"children":940},{"style":405},[941],{"type":37,"value":942},"1800",{"type":32,"tag":157,"props":944,"children":945},{"style":174},[946],{"type":37,"value":920},{"type":32,"tag":157,"props":948,"children":949},{"style":164},[950],{"type":37,"value":951},"\u002F\u002F product pages 30m\n",{"type":32,"tag":157,"props":953,"children":954},{"class":159,"line":229},[955,960,965,970,975],{"type":32,"tag":157,"props":956,"children":957},{"style":238},[958],{"type":37,"value":959},"    '\u002Fkategori\u002F**'",{"type":32,"tag":157,"props":961,"children":962},{"style":174},[963],{"type":37,"value":964},": { static: ",{"type":32,"tag":157,"props":966,"children":967},{"style":405},[968],{"type":37,"value":969},"true",{"type":32,"tag":157,"props":971,"children":972},{"style":174},[973],{"type":37,"value":974}," } ",{"type":32,"tag":157,"props":976,"children":977},{"style":164},[978],{"type":37,"value":979},"\u002F\u002F category pages build-time static\n",{"type":32,"tag":157,"props":981,"children":982},{"class":159,"line":249},[983],{"type":32,"tag":157,"props":984,"children":985},{"style":174},[986],{"type":37,"value":987},"  }\n",{"type":32,"tag":157,"props":989,"children":990},{"class":159,"line":26},[991],{"type":32,"tag":157,"props":992,"children":993},{"style":174},[994],{"type":37,"value":340},{"type":32,"tag":33,"props":996,"children":997},{},[998,1004],{"type":32,"tag":114,"props":999,"children":1001},{"className":1000},[],[1002],{"type":37,"value":1003},"swr",{"type":37,"value":1005}," (stale-while-revalidate) stratejisi: ilk request SSR render eder, sonraki request'ler cache'den gelir, arka planda yeniden render olur. Cloudflare KV store üzerinde cache key olarak URL + user segment (logged-in\u002Fanonymous) kullandık.",{"type":32,"tag":33,"props":1007,"children":1008},{},[1009,1013],{"type":32,"tag":60,"props":1010,"children":1011},{},[1012],{"type":37,"value":556},{"type":37,"value":1014}," TTFB (Time to First Byte) 840ms → 120ms, LCP 4.1s → 2.3s. Cache hit rate ilk haftada %78. Tradeoff: personalization cache key'ine bağlı, örneğin sepetteki ürün sayısı gibi user-specific veri cache'lenemiyor, client-side fetch ile çekiliyor.",{"type":32,"tag":40,"props":1016,"children":1018},{"id":1017},"above-the-fold-görsel-optimizasyonu",[1019],{"type":37,"value":1020},"Above-the-fold görsel optimizasyonu",{"type":32,"tag":33,"props":1022,"children":1023},{},[1024,1026,1032],{"type":37,"value":1025},"Hero görseli 1.2MB JPEG'ten 180kB WebP'ye dönüştürüp ",{"type":32,"tag":114,"props":1027,"children":1029},{"className":1028},[],[1030],{"type":37,"value":1031},"\u003Cpicture>",{"type":37,"value":1033}," element ile responsive breakpoint'ler ekledik:",{"type":32,"tag":147,"props":1035,"children":1037},{"className":149,"code":1036,"language":151,"meta":16,"style":16},"\u003Cpicture>\n  \u003Csource\n    srcset=\"\u002Fimages\u002Fhero-mobile.webp\"\n    media=\"(max-width: 640px)\"\n    type=\"image\u002Fwebp\"\n  \u002F>\n  \u003Csource\n    srcset=\"\u002Fimages\u002Fhero-desktop.webp\"\n    media=\"(min-width: 641px)\"\n    type=\"image\u002Fwebp\"\n  \u002F>\n  \u003Cimg\n    src=\"\u002Fimages\u002Fhero-desktop.jpg\"\n    alt=\"Yeni sezon koleksiyonu\"\n    fetchpriority=\"high\"\n    decoding=\"async\"\n  \u002F>\n\u003C\u002Fpicture>\n",[1038],{"type":32,"tag":114,"props":1039,"children":1040},{"__ignoreMap":16},[1041,1057,1065,1073,1081,1089,1097,1104,1112,1120,1127,1134,1142,1150,1158,1166,1174,1181],{"type":32,"tag":157,"props":1042,"children":1043},{"class":159,"line":160},[1044,1048,1053],{"type":32,"tag":157,"props":1045,"children":1046},{"style":174},[1047],{"type":37,"value":177},{"type":32,"tag":157,"props":1049,"children":1050},{"style":180},[1051],{"type":37,"value":1052},"picture",{"type":32,"tag":157,"props":1054,"children":1055},{"style":174},[1056],{"type":37,"value":194},{"type":32,"tag":157,"props":1058,"children":1059},{"class":159,"line":170},[1060],{"type":32,"tag":157,"props":1061,"children":1062},{"style":174},[1063],{"type":37,"value":1064},"  \u003Csource\n",{"type":32,"tag":157,"props":1066,"children":1067},{"class":159,"line":197},[1068],{"type":32,"tag":157,"props":1069,"children":1070},{"style":174},[1071],{"type":37,"value":1072},"    srcset=\"\u002Fimages\u002Fhero-mobile.webp\"\n",{"type":32,"tag":157,"props":1074,"children":1075},{"class":159,"line":211},[1076],{"type":32,"tag":157,"props":1077,"children":1078},{"style":174},[1079],{"type":37,"value":1080},"    media=\"(max-width: 640px)\"\n",{"type":32,"tag":157,"props":1082,"children":1083},{"class":159,"line":220},[1084],{"type":32,"tag":157,"props":1085,"children":1086},{"style":174},[1087],{"type":37,"value":1088},"    type=\"image\u002Fwebp\"\n",{"type":32,"tag":157,"props":1090,"children":1091},{"class":159,"line":229},[1092],{"type":32,"tag":157,"props":1093,"children":1094},{"style":174},[1095],{"type":37,"value":1096},"  \u002F>\n",{"type":32,"tag":157,"props":1098,"children":1099},{"class":159,"line":249},[1100],{"type":32,"tag":157,"props":1101,"children":1102},{"style":174},[1103],{"type":37,"value":1064},{"type":32,"tag":157,"props":1105,"children":1106},{"class":159,"line":26},[1107],{"type":32,"tag":157,"props":1108,"children":1109},{"style":174},[1110],{"type":37,"value":1111},"    srcset=\"\u002Fimages\u002Fhero-desktop.webp\"\n",{"type":32,"tag":157,"props":1113,"children":1114},{"class":159,"line":284},[1115],{"type":32,"tag":157,"props":1116,"children":1117},{"style":174},[1118],{"type":37,"value":1119},"    media=\"(min-width: 641px)\"\n",{"type":32,"tag":157,"props":1121,"children":1122},{"class":159,"line":302},[1123],{"type":32,"tag":157,"props":1124,"children":1125},{"style":174},[1126],{"type":37,"value":1088},{"type":32,"tag":157,"props":1128,"children":1129},{"class":159,"line":316},[1130],{"type":32,"tag":157,"props":1131,"children":1132},{"style":174},[1133],{"type":37,"value":1096},{"type":32,"tag":157,"props":1135,"children":1136},{"class":159,"line":325},[1137],{"type":32,"tag":157,"props":1138,"children":1139},{"style":174},[1140],{"type":37,"value":1141},"  \u003Cimg\n",{"type":32,"tag":157,"props":1143,"children":1144},{"class":159,"line":334},[1145],{"type":32,"tag":157,"props":1146,"children":1147},{"style":174},[1148],{"type":37,"value":1149},"    src=\"\u002Fimages\u002Fhero-desktop.jpg\"\n",{"type":32,"tag":157,"props":1151,"children":1152},{"class":159,"line":343},[1153],{"type":32,"tag":157,"props":1154,"children":1155},{"style":174},[1156],{"type":37,"value":1157},"    alt=\"Yeni sezon koleksiyonu\"\n",{"type":32,"tag":157,"props":1159,"children":1160},{"class":159,"line":360},[1161],{"type":32,"tag":157,"props":1162,"children":1163},{"style":174},[1164],{"type":37,"value":1165},"    fetchpriority=\"high\"\n",{"type":32,"tag":157,"props":1167,"children":1168},{"class":159,"line":370},[1169],{"type":32,"tag":157,"props":1170,"children":1171},{"style":174},[1172],{"type":37,"value":1173},"    decoding=\"async\"\n",{"type":32,"tag":157,"props":1175,"children":1176},{"class":159,"line":387},[1177],{"type":32,"tag":157,"props":1178,"children":1179},{"style":174},[1180],{"type":37,"value":1096},{"type":32,"tag":157,"props":1182,"children":1183},{"class":159,"line":401},[1184,1188,1192],{"type":32,"tag":157,"props":1185,"children":1186},{"style":174},[1187],{"type":37,"value":349},{"type":32,"tag":157,"props":1189,"children":1190},{"style":180},[1191],{"type":37,"value":1052},{"type":32,"tag":157,"props":1193,"children":1194},{"style":174},[1195],{"type":37,"value":194},{"type":32,"tag":33,"props":1197,"children":1198},{},[1199,1205],{"type":32,"tag":114,"props":1200,"children":1202},{"className":1201},[],[1203],{"type":37,"value":1204},"fetchpriority=\"high\"",{"type":37,"value":1206}," attribute ile tarayıcıya \"bu görseli öncelikli yükle\" sinyali verdik. Cloudflare Image Resizing servisi ile CDN edge'de otomatik format dönüşümü yapıyoruz (WebP desteklemeyen tarayıcılara JPEG serve ediliyor).",{"type":32,"tag":33,"props":1208,"children":1209},{},[1210,1214,1216,1222],{"type":32,"tag":60,"props":1211,"children":1212},{},[1213],{"type":37,"value":556},{"type":37,"value":1215}," LCP 2.3s → 2.1s, görsel yükleme süresi 1200ms → 320ms. CLS (Cumulative Layout Shift) 0.12 → 0.02 — ",{"type":32,"tag":114,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":37,"value":1221},"aspect-ratio",{"type":37,"value":1223}," CSS property ile placeholder space reserve ettik.",{"type":32,"tag":40,"props":1225,"children":1227},{"id":1226},"benchmark-sonuçları-gerçek-kullanıcı-etkisi",[1228],{"type":37,"value":1229},"Benchmark sonuçları + gerçek kullanıcı etkisi",{"type":32,"tag":33,"props":1231,"children":1232},{},[1233],{"type":37,"value":1234},"PageSpeed Insights mobil skoru 34 → 92, desktop 62 → 98. CrUX 28 günlük ortalama:",{"type":32,"tag":1236,"props":1237,"children":1238},"table",{},[1239,1268],{"type":32,"tag":1240,"props":1241,"children":1242},"thead",{},[1243],{"type":32,"tag":1244,"props":1245,"children":1246},"tr",{},[1247,1253,1258,1263],{"type":32,"tag":1248,"props":1249,"children":1250},"th",{},[1251],{"type":37,"value":1252},"Metrik",{"type":32,"tag":1248,"props":1254,"children":1255},{},[1256],{"type":37,"value":1257},"Önce",{"type":32,"tag":1248,"props":1259,"children":1260},{},[1261],{"type":37,"value":1262},"Sonra",{"type":32,"tag":1248,"props":1264,"children":1265},{},[1266],{"type":37,"value":1267},"Değişim",{"type":32,"tag":1269,"props":1270,"children":1271},"tbody",{},[1272,1296,1319,1342],{"type":32,"tag":1244,"props":1273,"children":1274},{},[1275,1281,1286,1291],{"type":32,"tag":1276,"props":1277,"children":1278},"td",{},[1279],{"type":37,"value":1280},"LCP",{"type":32,"tag":1276,"props":1282,"children":1283},{},[1284],{"type":37,"value":1285},"10.2s",{"type":32,"tag":1276,"props":1287,"children":1288},{},[1289],{"type":37,"value":1290},"2.1s",{"type":32,"tag":1276,"props":1292,"children":1293},{},[1294],{"type":37,"value":1295},"-79%",{"type":32,"tag":1244,"props":1297,"children":1298},{},[1299,1304,1309,1314],{"type":32,"tag":1276,"props":1300,"children":1301},{},[1302],{"type":37,"value":1303},"TBT",{"type":32,"tag":1276,"props":1305,"children":1306},{},[1307],{"type":37,"value":1308},"2190ms",{"type":32,"tag":1276,"props":1310,"children":1311},{},[1312],{"type":37,"value":1313},"420ms",{"type":32,"tag":1276,"props":1315,"children":1316},{},[1317],{"type":37,"value":1318},"-81%",{"type":32,"tag":1244,"props":1320,"children":1321},{},[1322,1327,1332,1337],{"type":32,"tag":1276,"props":1323,"children":1324},{},[1325],{"type":37,"value":1326},"CLS",{"type":32,"tag":1276,"props":1328,"children":1329},{},[1330],{"type":37,"value":1331},"0.12",{"type":32,"tag":1276,"props":1333,"children":1334},{},[1335],{"type":37,"value":1336},"0.02",{"type":32,"tag":1276,"props":1338,"children":1339},{},[1340],{"type":37,"value":1341},"-83%",{"type":32,"tag":1244,"props":1343,"children":1344},{},[1345,1350,1355,1360],{"type":32,"tag":1276,"props":1346,"children":1347},{},[1348],{"type":37,"value":1349},"TTFB",{"type":32,"tag":1276,"props":1351,"children":1352},{},[1353],{"type":37,"value":1354},"840ms",{"type":32,"tag":1276,"props":1356,"children":1357},{},[1358],{"type":37,"value":1359},"120ms",{"type":32,"tag":1276,"props":1361,"children":1362},{},[1363],{"type":37,"value":1364},"-86%",{"type":32,"tag":33,"props":1366,"children":1367},{},[1368,1370,1379],{"type":37,"value":1369},"Google Analytics dönüşüm hunisi: checkout başlama oranı %3.2 → %4.8 (+50% relative lift). Bounce rate %68 → %52. Search Console: organik trafik 2 ay içinde %34 arttı (diğer SEO değişiklikleri sabit tutuldu). Bu sayılar Roibase'in ",{"type":32,"tag":1371,"props":1372,"children":1376},"a",{"href":1373,"rel":1374},"https:\u002F\u002Fwww.roibase.com.tr\u002Ftr\u002Fheadless",[1375],"nofollow",[1377],{"type":37,"value":1378},"Headless Commerce",{"type":37,"value":1380}," yaklaşımında standart hedefler — performans business metric'e dönüşmezse mimari değişiklik başarılı sayılmaz.",{"type":32,"tag":40,"props":1382,"children":1384},{"id":1383},"tradeofflar-ve-karar-kriterleri",[1385],{"type":37,"value":1386},"Tradeoff'lar ve karar kriterleri",{"type":32,"tag":33,"props":1388,"children":1389},{},[1390,1395,1397,1402,1404,1410],{"type":32,"tag":60,"props":1391,"children":1392},{},[1393],{"type":37,"value":1394},"Developer experience:",{"type":37,"value":1396}," Lazy hydration wrapper eklediğimiz için component API surface area arttı, yeni developer'lar ",{"type":32,"tag":114,"props":1398,"children":1400},{"className":1399},[],[1401],{"type":37,"value":813},{"type":37,"value":1403}," vs ",{"type":32,"tag":114,"props":1405,"children":1407},{"className":1406},[],[1408],{"type":37,"value":1409},"when-idle",{"type":37,"value":1411}," farkını öğrenmek zorunda. Biz Storybook dokümantasyonu + ESLint rule ile çözdük.",{"type":32,"tag":33,"props":1413,"children":1414},{},[1415,1420],{"type":32,"tag":60,"props":1416,"children":1417},{},[1418],{"type":37,"value":1419},"Bundle size vs runtime cost:",{"type":37,"value":1421}," Self-hosted font dosyaları ilk yükleme bundle'ına +60kB ekledi ama runtime'da DNS lookup + TLS handshake cost'unu kaldırdı. Bu tradeoff mobile 3G network'te net kazanç, fiber connection'da nötr.",{"type":32,"tag":33,"props":1423,"children":1424},{},[1425,1430,1432,1437],{"type":32,"tag":60,"props":1426,"children":1427},{},[1428],{"type":37,"value":1429},"Cache invalidation:",{"type":37,"value":1431}," ",{"type":32,"tag":114,"props":1433,"children":1435},{"className":1434},[],[1436],{"type":37,"value":1003},{"type":37,"value":1438}," stratejisi stale data riski taşıyor. Stok bilgisi gibi kritik verileri client-side realtime fetch ile güncel tutuyoruz (WebSocket yerine 30s polling — edge function cost daha düşük).",{"type":32,"tag":33,"props":1440,"children":1441},{},[1442,1447,1448,1453],{"type":32,"tag":60,"props":1443,"children":1444},{},[1445],{"type":37,"value":1446},"Cloudflare vendor lock-in:",{"type":37,"value":1431},{"type":32,"tag":114,"props":1449,"children":1451},{"className":1450},[],[1452],{"type":37,"value":848},{"type":37,"value":1454}," KV-based caching Cloudflare'e özgü, başka platforma taşınırsa yeniden implement gerekir. Ancak Vercel\u002FNetlify'da benzer primitive'ler var, migrasyon effort'u kabul edilebilir.",{"type":32,"tag":40,"props":1456,"children":1458},{"id":1457},"sonraki-adımlar",[1459],{"type":37,"value":1460},"Sonraki adımlar",{"type":32,"tag":33,"props":1462,"children":1463},{},[1464],{"type":37,"value":1465},"2.1s LCP iyi ama CrUX P75 (75th percentile) hala 3.2s. Bunun için şu yol haritası var:",{"type":32,"tag":1467,"props":1468,"children":1469},"ol",{},[1470,1480,1490,1500],{"type":32,"tag":56,"props":1471,"children":1472},{},[1473,1478],{"type":32,"tag":60,"props":1474,"children":1475},{},[1476],{"type":37,"value":1477},"Image CDN + automatic format negotiation:",{"type":37,"value":1479}," Cloudflare Polish yerine Imgix entegrasyonu, AVIF desteği",{"type":32,"tag":56,"props":1481,"children":1482},{},[1483,1488],{"type":32,"tag":60,"props":1484,"children":1485},{},[1486],{"type":37,"value":1487},"Prefetch stratejisi:",{"type":37,"value":1489}," Intersection Observer ile viewport'a yaklaşan product card'ların verisini prefetch",{"type":32,"tag":56,"props":1491,"children":1492},{},[1493,1498],{"type":32,"tag":60,"props":1494,"children":1495},{},[1496],{"type":37,"value":1497},"Service Worker + offline-first:",{"type":37,"value":1499}," Workbox ile critical asset'leri cache, network-first fallback",{"type":32,"tag":56,"props":1501,"children":1502},{},[1503,1508],{"type":32,"tag":60,"props":1504,"children":1505},{},[1506],{"type":37,"value":1507},"Bundle splitting:",{"type":37,"value":1509}," Nuxt 3'ün code splitting'i aggressive yap, route bazlı chunking",{"type":32,"tag":33,"props":1511,"children":1512},{},[1513],{"type":37,"value":1514},"Performans optimizasyonu bitmeyen oyun — her 100ms kazanç dönüşümde %1-2 lift sağlıyor. Nuxt 3 + Cloudflare Pages kombinasyonu edge rendering + modern JS framework ergonomics dengesi sunuyor. Stack kararını verirken LCP target'ı business requirement olarak tanımlamak, sonrasında mimari seçenekleri bu constraint içinde değerlendirmek gerekiyor.",{"type":32,"tag":380,"props":1516,"children":1517},{},[1518],{"type":37,"value":1519},"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":197,"depth":197,"links":1521},[1522,1523,1524,1526,1527,1528,1529,1530],{"id":42,"depth":170,"text":45},{"id":104,"depth":170,"text":107},{"id":561,"depth":170,"text":1525},"Selective hydration + content-visibility",{"id":818,"depth":170,"text":821},{"id":1017,"depth":170,"text":1020},{"id":1226,"depth":170,"text":1229},{"id":1383,"depth":170,"text":1386},{"id":1457,"depth":170,"text":1460},"markdown","content:tr:tech:nuxt-3-cloudflare-pages-10s-lcpden-2sye.md","content","tr\u002Ftech\u002Fnuxt-3-cloudflare-pages-10s-lcpden-2sye.md","tr\u002Ftech\u002Fnuxt-3-cloudflare-pages-10s-lcpden-2sye","md",1778164175451]