[{"data":1,"prerenderedAt":1560},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fde\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimierung":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":6,"_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":1554,"_id":1555,"_source":1556,"_file":1557,"_stem":1558,"_extension":1559},"tech",false,"","Nuxt 3 + Cloudflare Pages: LCP von 10s auf 2s","Self-hosted Fonts, selective Hydration, content-visibility und Edge Caching reduzierten LCP um 80%. Echte Benchmarks, Code-Beispiele und Trade-offs.","2026-05-07",[21,22,23,24,25],"nuxt3","cloudflare-pages","web-performance","lcp","edge-caching",9,"Roibase",{"type":29,"children":30,"toc":1543},"root",[31,39,46,51,97,102,108,146,549,566,578,599,707,720,806,829,835,864,1008,1021,1036,1042,1055,1217,1230,1247,1253,1258,1388,1404,1410,1435,1445,1462,1478,1484,1489,1533,1538],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Nach Googles Core Web Vitals Update muss LCP (Largest Contentful Paint) unter 2,5 Sekunden liegen – sonst leiden sowohl organische Rankings als auch Conversion Rates. Als wir einen E-Commerce-Shop zu Nuxt 3 + Cloudflare Pages migrierten, zeigte der erste Deploy ein LCP von 10,2 Sekunden. Mit einer Kombination aus Self-hosted Fonts, selektiver Hydration, CSS content-visibility und Edge Caching reduzierten wir das auf 2,1 Sekunden. Hier zeigen wir Schritt für Schritt, welche Änderung welchen Gewinn brachte, welche Trade-offs entstanden, und präsentieren den Code.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"das-problem-verstehen-anatomie-der-10s-lcp",[44],{"type":37,"value":45},"Das Problem verstehen: Anatomie der 10s LCP",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"Der erste CrUX-Report zeigte ein Median-LCP von 10,2s und TBT (Total Blocking Time) von 2190ms. Die Chrome DevTools Lighthouse-Analyse offenbarte:",{"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-Loading:",{"type":37,"value":66}," 3 Font-Familien von Google Fonts CDN, 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, alle Seite wird hydratisiert",{"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 Bild:",{"type":37,"value":86}," 1,2MB JPEG, kein Lazy Loading",{"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-Responses werden nicht gecacht, jeder Request geht zum Origin",{"type":32,"tag":33,"props":98,"children":99},{},[100],{"type":37,"value":101},"Baseline-Messung: PageSpeed Insights Mobil 34\u002F100, Desktop 62\u002F100. Diese Werte direkt nach der Migration von Shopify Liquid zu Nuxt 3 – der Framework-Wechsel allein brachte keinen Performance-Gewinn, wir brauchten echte Architektur-Optimierung.",{"type":32,"tag":40,"props":103,"children":105},{"id":104},"self-hosted-fonts-preload-strategie",[106],{"type":37,"value":107},"Self-hosted Fonts + Preload-Strategie",{"type":32,"tag":33,"props":109,"children":110},{},[111,113,120,122,128,130,136,138,144],{"type":37,"value":112},"Statt Google Fonts CDN zogen wir die Font-Dateien ins ",{"type":32,"tag":114,"props":115,"children":117},"code",{"className":116},[],[118],{"type":37,"value":119},"public\u002Ffonts\u002F",{"type":37,"value":121}," Verzeichnis und definierten ",{"type":32,"tag":114,"props":123,"children":125},{"className":124},[],[126],{"type":37,"value":127},"@font-face",{"type":37,"value":129}," direkt in ",{"type":32,"tag":114,"props":131,"children":133},{"className":132},[],[134],{"type":37,"value":135},"app.vue",{"type":37,"value":137},". Der entscheidende Unterschied: mit ",{"type":32,"tag":114,"props":139,"children":141},{"className":140},[],[142],{"type":37,"value":143},"\u003Clink rel=\"preload\">",{"type":37,"value":145}," fordern wir Font-Dateien im initialen HTML-Response an – bevor CSS geparst wird.",{"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,283,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":268},{"class":159,"line":267},8,[269,274,279],{"type":32,"tag":157,"props":270,"children":271},{"style":174},[272],{"type":37,"value":273},"      as: ",{"type":32,"tag":157,"props":275,"children":276},{"style":238},[277],{"type":37,"value":278},"'font'",{"type":32,"tag":157,"props":280,"children":281},{"style":174},[282],{"type":37,"value":246},{"type":32,"tag":157,"props":284,"children":285},{"class":159,"line":26},[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,559,564],{"type":32,"tag":60,"props":553,"children":554},{},[555],{"type":37,"value":556},"Gewinn:",{"type":37,"value":558}," LCP 10,2s → 7,8s (2,4s Reduktion). Font-Loading ist nicht mehr render-blocking, FOIT-Dauer fiel von 1200ms auf 180ms. ",{"type":32,"tag":60,"props":560,"children":561},{},[562],{"type":37,"value":563},"Trade-off:",{"type":37,"value":565}," Font-Dateien sind jetzt in unserem CDN, Versionierung erfolgt manuell. Wir lösten das mit Cloudflare R2 Bucket + Cache-Control Headern.",{"type":32,"tag":40,"props":567,"children":569},{"id":568},"selective-hydration-content-visibility",[570,572],{"type":37,"value":571},"Selective Hydration + ",{"type":32,"tag":114,"props":573,"children":575},{"className":574},[],[576],{"type":37,"value":577},"content-visibility",{"type":32,"tag":33,"props":579,"children":580},{},[581,583,589,591,597],{"type":37,"value":582},"Nuxt 3 hydratisiert standardmäßig alle Komponenten. Aber Komponenten unterhalb des Fold (Footer, Kommentarbereich, empfohlene Produkte) müssen nicht vor dem ersten User-Scroll hydratisiert werden. Mit dem ",{"type":32,"tag":114,"props":584,"children":586},{"className":585},[],[587],{"type":37,"value":588},"@nuxt\u002Flazy-hydration",{"type":37,"value":590}," Modul wrappten wir diese Komponenten mit ",{"type":32,"tag":114,"props":592,"children":594},{"className":593},[],[595],{"type":37,"value":596},"LazyHydrate",{"type":37,"value":598},":",{"type":32,"tag":147,"props":600,"children":602},{"className":149,"code":601,"language":151,"meta":16,"style":16},"\u003Ctemplate>\n  \u003CLazyHydrate when-visible>\n    \u003CProductRecommendations :product-id=\"productId\" \u002F>\n  \u003C\u002FLazyHydrate>\n\u003C\u002Ftemplate>\n",[603],{"type":32,"tag":114,"props":604,"children":605},{"__ignoreMap":16},[606,622,643,676,692],{"type":32,"tag":157,"props":607,"children":608},{"class":159,"line":160},[609,613,618],{"type":32,"tag":157,"props":610,"children":611},{"style":174},[612],{"type":37,"value":177},{"type":32,"tag":157,"props":614,"children":615},{"style":180},[616],{"type":37,"value":617},"template",{"type":32,"tag":157,"props":619,"children":620},{"style":174},[621],{"type":37,"value":194},{"type":32,"tag":157,"props":623,"children":624},{"class":159,"line":170},[625,630,634,639],{"type":32,"tag":157,"props":626,"children":627},{"style":174},[628],{"type":37,"value":629},"  \u003C",{"type":32,"tag":157,"props":631,"children":632},{"style":180},[633],{"type":37,"value":596},{"type":32,"tag":157,"props":635,"children":636},{"style":186},[637],{"type":37,"value":638}," when-visible",{"type":32,"tag":157,"props":640,"children":641},{"style":174},[642],{"type":37,"value":194},{"type":32,"tag":157,"props":644,"children":645},{"class":159,"line":197},[646,651,656,661,666,671],{"type":32,"tag":157,"props":647,"children":648},{"style":174},[649],{"type":37,"value":650},"    \u003C",{"type":32,"tag":157,"props":652,"children":653},{"style":180},[654],{"type":37,"value":655},"ProductRecommendations",{"type":32,"tag":157,"props":657,"children":658},{"style":186},[659],{"type":37,"value":660}," :product-id",{"type":32,"tag":157,"props":662,"children":663},{"style":174},[664],{"type":37,"value":665},"=",{"type":32,"tag":157,"props":667,"children":668},{"style":238},[669],{"type":37,"value":670},"\"productId\"",{"type":32,"tag":157,"props":672,"children":673},{"style":174},[674],{"type":37,"value":675}," \u002F>\n",{"type":32,"tag":157,"props":677,"children":678},{"class":159,"line":211},[679,684,688],{"type":32,"tag":157,"props":680,"children":681},{"style":174},[682],{"type":37,"value":683},"  \u003C\u002F",{"type":32,"tag":157,"props":685,"children":686},{"style":180},[687],{"type":37,"value":596},{"type":32,"tag":157,"props":689,"children":690},{"style":174},[691],{"type":37,"value":194},{"type":32,"tag":157,"props":693,"children":694},{"class":159,"line":220},[695,699,703],{"type":32,"tag":157,"props":696,"children":697},{"style":174},[698],{"type":37,"value":349},{"type":32,"tag":157,"props":700,"children":701},{"style":180},[702],{"type":37,"value":617},{"type":32,"tag":157,"props":704,"children":705},{"style":174},[706],{"type":37,"value":194},{"type":32,"tag":33,"props":708,"children":709},{},[710,712,718],{"type":37,"value":711},"Auf CSS-Seite signalisierten wir dem Browser mit ",{"type":32,"tag":114,"props":713,"children":715},{"className":714},[],[716],{"type":37,"value":717},"content-visibility: auto",{"type":37,"value":719},", dass er Layout-Berechnungen für unsichtbare Elemente überspringen kann:",{"type":32,"tag":147,"props":721,"children":725},{"className":722,"code":723,"language":724,"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-Höhe *\u002F\n}\n","css",[726],{"type":32,"tag":114,"props":727,"children":728},{"__ignoreMap":16},[729,741,762,799],{"type":32,"tag":157,"props":730,"children":731},{"class":159,"line":160},[732,737],{"type":32,"tag":157,"props":733,"children":734},{"style":186},[735],{"type":37,"value":736},".product-recommendations",{"type":32,"tag":157,"props":738,"children":739},{"style":174},[740],{"type":37,"value":398},{"type":32,"tag":157,"props":742,"children":743},{"class":159,"line":170},[744,749,753,758],{"type":32,"tag":157,"props":745,"children":746},{"style":405},[747],{"type":37,"value":748},"  content-visibility",{"type":32,"tag":157,"props":750,"children":751},{"style":174},[752],{"type":37,"value":413},{"type":32,"tag":157,"props":754,"children":755},{"style":405},[756],{"type":37,"value":757},"auto",{"type":32,"tag":157,"props":759,"children":760},{"style":174},[761],{"type":37,"value":423},{"type":32,"tag":157,"props":763,"children":764},{"class":159,"line":197},[765,770,774,779,784,789,794],{"type":32,"tag":157,"props":766,"children":767},{"style":405},[768],{"type":37,"value":769},"  contain-intrinsic-size",{"type":32,"tag":157,"props":771,"children":772},{"style":174},[773],{"type":37,"value":413},{"type":32,"tag":157,"props":775,"children":776},{"style":405},[777],{"type":37,"value":778},"0",{"type":32,"tag":157,"props":780,"children":781},{"style":405},[782],{"type":37,"value":783}," 500",{"type":32,"tag":157,"props":785,"children":786},{"style":391},[787],{"type":37,"value":788},"px",{"type":32,"tag":157,"props":790,"children":791},{"style":174},[792],{"type":37,"value":793},"; ",{"type":32,"tag":157,"props":795,"children":796},{"style":164},[797],{"type":37,"value":798},"\u002F* Placeholder-Höhe *\u002F\n",{"type":32,"tag":157,"props":800,"children":801},{"class":159,"line":211},[802],{"type":32,"tag":157,"props":803,"children":804},{"style":174},[805],{"type":37,"value":532},{"type":32,"tag":33,"props":807,"children":808},{},[809,813,815,819,821,827],{"type":32,"tag":60,"props":810,"children":811},{},[812],{"type":37,"value":556},{"type":37,"value":814}," TBT 2190ms → 420ms, LCP 7,8s → 4,1s. Das initiale JS-Bundle schrumpfte von 420kB auf 180kB (brotli-compressed). ",{"type":32,"tag":60,"props":816,"children":817},{},[818],{"type":37,"value":563},{"type":37,"value":820}," ",{"type":32,"tag":114,"props":822,"children":824},{"className":823},[],[825],{"type":37,"value":826},"when-visible",{"type":37,"value":828}," nutzt Intersection Observer, auf älteren Browsern wie IE11 wäre ein Polyfill nötig. Wir targetieren moderne Browser, daher kein Thema.",{"type":32,"tag":40,"props":830,"children":832},{"id":831},"edge-caching-isr-hybrid-ansatz",[833],{"type":37,"value":834},"Edge Caching + ISR-Hybrid-Ansatz",{"type":32,"tag":33,"props":836,"children":837},{},[838,840,846,848,854,856,862],{"type":37,"value":839},"Cloudflare Pages cached standardmäßig statische Assets, aber SSR-Endpunkte (alles außer ",{"type":32,"tag":114,"props":841,"children":843},{"className":842},[],[844],{"type":37,"value":845},"\u002F_nuxt\u002F...",{"type":37,"value":847},") werden nicht gecacht. In ",{"type":32,"tag":114,"props":849,"children":851},{"className":850},[],[852],{"type":37,"value":853},"nuxt.config.ts",{"type":37,"value":855}," definierten wir via ",{"type":32,"tag":114,"props":857,"children":859},{"className":858},[],[860],{"type":37,"value":861},"routeRules",{"type":37,"value":863},", welche Paths wie lange gecacht werden:",{"type":32,"tag":147,"props":865,"children":869},{"className":866,"code":867,"language":868,"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    '\u002Fprodukt\u002F**': { swr: 1800 }, \u002F\u002F Produktseiten 30m\n    '\u002Fkategorie\u002F**': { static: true } \u002F\u002F Kategorieseiten Build-Zeit static\n  }\n})\n","ts",[870],{"type":32,"tag":114,"props":871,"children":872},{"__ignoreMap":16},[873,881,903,911,939,965,993,1001],{"type":32,"tag":157,"props":874,"children":875},{"class":159,"line":160},[876],{"type":32,"tag":157,"props":877,"children":878},{"style":164},[879],{"type":37,"value":880},"\u002F\u002F nuxt.config.ts\n",{"type":32,"tag":157,"props":882,"children":883},{"class":159,"line":170},[884,889,894,899],{"type":32,"tag":157,"props":885,"children":886},{"style":391},[887],{"type":37,"value":888},"export",{"type":32,"tag":157,"props":890,"children":891},{"style":391},[892],{"type":37,"value":893}," default",{"type":32,"tag":157,"props":895,"children":896},{"style":186},[897],{"type":37,"value":898}," defineNuxtConfig",{"type":32,"tag":157,"props":900,"children":901},{"style":174},[902],{"type":37,"value":208},{"type":32,"tag":157,"props":904,"children":905},{"class":159,"line":197},[906],{"type":32,"tag":157,"props":907,"children":908},{"style":174},[909],{"type":37,"value":910},"  routeRules: {\n",{"type":32,"tag":157,"props":912,"children":913},{"class":159,"line":211},[914,919,924,929,934],{"type":32,"tag":157,"props":915,"children":916},{"style":238},[917],{"type":37,"value":918},"    '\u002F'",{"type":32,"tag":157,"props":920,"children":921},{"style":174},[922],{"type":37,"value":923},": { swr: ",{"type":32,"tag":157,"props":925,"children":926},{"style":405},[927],{"type":37,"value":928},"3600",{"type":32,"tag":157,"props":930,"children":931},{"style":174},[932],{"type":37,"value":933}," }, ",{"type":32,"tag":157,"props":935,"children":936},{"style":164},[937],{"type":37,"value":938},"\u002F\u002F Homepage 1h stale-while-revalidate\n",{"type":32,"tag":157,"props":940,"children":941},{"class":159,"line":220},[942,947,951,956,960],{"type":32,"tag":157,"props":943,"children":944},{"style":238},[945],{"type":37,"value":946},"    '\u002Fprodukt\u002F**'",{"type":32,"tag":157,"props":948,"children":949},{"style":174},[950],{"type":37,"value":923},{"type":32,"tag":157,"props":952,"children":953},{"style":405},[954],{"type":37,"value":955},"1800",{"type":32,"tag":157,"props":957,"children":958},{"style":174},[959],{"type":37,"value":933},{"type":32,"tag":157,"props":961,"children":962},{"style":164},[963],{"type":37,"value":964},"\u002F\u002F Produktseiten 30m\n",{"type":32,"tag":157,"props":966,"children":967},{"class":159,"line":229},[968,973,978,983,988],{"type":32,"tag":157,"props":969,"children":970},{"style":238},[971],{"type":37,"value":972},"    '\u002Fkategorie\u002F**'",{"type":32,"tag":157,"props":974,"children":975},{"style":174},[976],{"type":37,"value":977},": { static: ",{"type":32,"tag":157,"props":979,"children":980},{"style":405},[981],{"type":37,"value":982},"true",{"type":32,"tag":157,"props":984,"children":985},{"style":174},[986],{"type":37,"value":987}," } ",{"type":32,"tag":157,"props":989,"children":990},{"style":164},[991],{"type":37,"value":992},"\u002F\u002F Kategorieseiten Build-Zeit static\n",{"type":32,"tag":157,"props":994,"children":995},{"class":159,"line":249},[996],{"type":32,"tag":157,"props":997,"children":998},{"style":174},[999],{"type":37,"value":1000},"  }\n",{"type":32,"tag":157,"props":1002,"children":1003},{"class":159,"line":267},[1004],{"type":32,"tag":157,"props":1005,"children":1006},{"style":174},[1007],{"type":37,"value":340},{"type":32,"tag":33,"props":1009,"children":1010},{},[1011,1013,1019],{"type":37,"value":1012},"Die ",{"type":32,"tag":114,"props":1014,"children":1016},{"className":1015},[],[1017],{"type":37,"value":1018},"swr",{"type":37,"value":1020},"-Strategie (stale-while-revalidate) funktioniert so: erster Request rendert SSR, nachfolgende Requests kommen aus dem Cache, im Hintergrund rendert sich die Seite neu. Als Cache-Key nutzten wir URL + User-Segment (logged-in\u002Fanonym) in Cloudflare KV Store.",{"type":32,"tag":33,"props":1022,"children":1023},{},[1024,1028,1030,1034],{"type":32,"tag":60,"props":1025,"children":1026},{},[1027],{"type":37,"value":556},{"type":37,"value":1029}," TTFB (Time to First Byte) 840ms → 120ms, LCP 4,1s → 2,3s. Cache Hit Rate in der ersten Woche: 78%. ",{"type":32,"tag":60,"props":1031,"children":1032},{},[1033],{"type":37,"value":563},{"type":37,"value":1035}," Personalisierung ist an den Cache-Key gebunden – Daten wie Warenkorbgröße lassen sich nicht cachen, wir fetchen diese client-seitig.",{"type":32,"tag":40,"props":1037,"children":1039},{"id":1038},"above-the-fold-bildoptimierung",[1040],{"type":37,"value":1041},"Above-the-Fold Bildoptimierung",{"type":32,"tag":33,"props":1043,"children":1044},{},[1045,1047,1053],{"type":37,"value":1046},"Das Hero-Bild schrumpfte von 1,2MB JPEG auf 180kB WebP, und wir nutzten ",{"type":32,"tag":114,"props":1048,"children":1050},{"className":1049},[],[1051],{"type":37,"value":1052},"\u003Cpicture>",{"type":37,"value":1054}," für responsive Breakpoints:",{"type":32,"tag":147,"props":1056,"children":1058},{"className":149,"code":1057,"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=\"Neue Saisonkollektion\"\n    fetchpriority=\"high\"\n    decoding=\"async\"\n  \u002F>\n\u003C\u002Fpicture>\n",[1059],{"type":32,"tag":114,"props":1060,"children":1061},{"__ignoreMap":16},[1062,1078,1086,1094,1102,1110,1118,1125,1133,1141,1148,1155,1163,1171,1179,1187,1195,1202],{"type":32,"tag":157,"props":1063,"children":1064},{"class":159,"line":160},[1065,1069,1074],{"type":32,"tag":157,"props":1066,"children":1067},{"style":174},[1068],{"type":37,"value":177},{"type":32,"tag":157,"props":1070,"children":1071},{"style":180},[1072],{"type":37,"value":1073},"picture",{"type":32,"tag":157,"props":1075,"children":1076},{"style":174},[1077],{"type":37,"value":194},{"type":32,"tag":157,"props":1079,"children":1080},{"class":159,"line":170},[1081],{"type":32,"tag":157,"props":1082,"children":1083},{"style":174},[1084],{"type":37,"value":1085},"  \u003Csource\n",{"type":32,"tag":157,"props":1087,"children":1088},{"class":159,"line":197},[1089],{"type":32,"tag":157,"props":1090,"children":1091},{"style":174},[1092],{"type":37,"value":1093},"    srcset=\"\u002Fimages\u002Fhero-mobile.webp\"\n",{"type":32,"tag":157,"props":1095,"children":1096},{"class":159,"line":211},[1097],{"type":32,"tag":157,"props":1098,"children":1099},{"style":174},[1100],{"type":37,"value":1101},"    media=\"(max-width: 640px)\"\n",{"type":32,"tag":157,"props":1103,"children":1104},{"class":159,"line":220},[1105],{"type":32,"tag":157,"props":1106,"children":1107},{"style":174},[1108],{"type":37,"value":1109},"    type=\"image\u002Fwebp\"\n",{"type":32,"tag":157,"props":1111,"children":1112},{"class":159,"line":229},[1113],{"type":32,"tag":157,"props":1114,"children":1115},{"style":174},[1116],{"type":37,"value":1117},"  \u002F>\n",{"type":32,"tag":157,"props":1119,"children":1120},{"class":159,"line":249},[1121],{"type":32,"tag":157,"props":1122,"children":1123},{"style":174},[1124],{"type":37,"value":1085},{"type":32,"tag":157,"props":1126,"children":1127},{"class":159,"line":267},[1128],{"type":32,"tag":157,"props":1129,"children":1130},{"style":174},[1131],{"type":37,"value":1132},"    srcset=\"\u002Fimages\u002Fhero-desktop.webp\"\n",{"type":32,"tag":157,"props":1134,"children":1135},{"class":159,"line":26},[1136],{"type":32,"tag":157,"props":1137,"children":1138},{"style":174},[1139],{"type":37,"value":1140},"    media=\"(min-width: 641px)\"\n",{"type":32,"tag":157,"props":1142,"children":1143},{"class":159,"line":302},[1144],{"type":32,"tag":157,"props":1145,"children":1146},{"style":174},[1147],{"type":37,"value":1109},{"type":32,"tag":157,"props":1149,"children":1150},{"class":159,"line":316},[1151],{"type":32,"tag":157,"props":1152,"children":1153},{"style":174},[1154],{"type":37,"value":1117},{"type":32,"tag":157,"props":1156,"children":1157},{"class":159,"line":325},[1158],{"type":32,"tag":157,"props":1159,"children":1160},{"style":174},[1161],{"type":37,"value":1162},"  \u003Cimg\n",{"type":32,"tag":157,"props":1164,"children":1165},{"class":159,"line":334},[1166],{"type":32,"tag":157,"props":1167,"children":1168},{"style":174},[1169],{"type":37,"value":1170},"    src=\"\u002Fimages\u002Fhero-desktop.jpg\"\n",{"type":32,"tag":157,"props":1172,"children":1173},{"class":159,"line":343},[1174],{"type":32,"tag":157,"props":1175,"children":1176},{"style":174},[1177],{"type":37,"value":1178},"    alt=\"Neue Saisonkollektion\"\n",{"type":32,"tag":157,"props":1180,"children":1181},{"class":159,"line":360},[1182],{"type":32,"tag":157,"props":1183,"children":1184},{"style":174},[1185],{"type":37,"value":1186},"    fetchpriority=\"high\"\n",{"type":32,"tag":157,"props":1188,"children":1189},{"class":159,"line":370},[1190],{"type":32,"tag":157,"props":1191,"children":1192},{"style":174},[1193],{"type":37,"value":1194},"    decoding=\"async\"\n",{"type":32,"tag":157,"props":1196,"children":1197},{"class":159,"line":387},[1198],{"type":32,"tag":157,"props":1199,"children":1200},{"style":174},[1201],{"type":37,"value":1117},{"type":32,"tag":157,"props":1203,"children":1204},{"class":159,"line":401},[1205,1209,1213],{"type":32,"tag":157,"props":1206,"children":1207},{"style":174},[1208],{"type":37,"value":349},{"type":32,"tag":157,"props":1210,"children":1211},{"style":180},[1212],{"type":37,"value":1073},{"type":32,"tag":157,"props":1214,"children":1215},{"style":174},[1216],{"type":37,"value":194},{"type":32,"tag":33,"props":1218,"children":1219},{},[1220,1222,1228],{"type":37,"value":1221},"Das Attribut ",{"type":32,"tag":114,"props":1223,"children":1225},{"className":1224},[],[1226],{"type":37,"value":1227},"fetchpriority=\"high\"",{"type":37,"value":1229}," signalisiert dem Browser, dieses Bild bevorzugt zu laden. Cloudflare Image Resizing führt die Format-Konvertierung am Edge durch – Tarayıcılara ohne WebP-Support wird JPEG ausgeliefert.",{"type":32,"tag":33,"props":1231,"children":1232},{},[1233,1237,1239,1245],{"type":32,"tag":60,"props":1234,"children":1235},{},[1236],{"type":37,"value":556},{"type":37,"value":1238}," LCP 2,3s → 2,1s, Bildladedauer 1200ms → 320ms. CLS (Cumulative Layout Shift) 0,12 → 0,02 – wir reservierten mit ",{"type":32,"tag":114,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":37,"value":1244},"aspect-ratio",{"type":37,"value":1246}," CSS Platz für das Bild.",{"type":32,"tag":40,"props":1248,"children":1250},{"id":1249},"benchmark-ergebnisse-echte-user-auswirkung",[1251],{"type":37,"value":1252},"Benchmark-Ergebnisse + echte User-Auswirkung",{"type":32,"tag":33,"props":1254,"children":1255},{},[1256],{"type":37,"value":1257},"PageSpeed Insights Mobil 34 → 92, Desktop 62 → 98. CrUX 28-Tage-Durchschnitt:",{"type":32,"tag":1259,"props":1260,"children":1261},"table",{},[1262,1291],{"type":32,"tag":1263,"props":1264,"children":1265},"thead",{},[1266],{"type":32,"tag":1267,"props":1268,"children":1269},"tr",{},[1270,1276,1281,1286],{"type":32,"tag":1271,"props":1272,"children":1273},"th",{},[1274],{"type":37,"value":1275},"Metrik",{"type":32,"tag":1271,"props":1277,"children":1278},{},[1279],{"type":37,"value":1280},"Vorher",{"type":32,"tag":1271,"props":1282,"children":1283},{},[1284],{"type":37,"value":1285},"Nachher",{"type":32,"tag":1271,"props":1287,"children":1288},{},[1289],{"type":37,"value":1290},"Änderung",{"type":32,"tag":1292,"props":1293,"children":1294},"tbody",{},[1295,1319,1342,1365],{"type":32,"tag":1267,"props":1296,"children":1297},{},[1298,1304,1309,1314],{"type":32,"tag":1299,"props":1300,"children":1301},"td",{},[1302],{"type":37,"value":1303},"LCP",{"type":32,"tag":1299,"props":1305,"children":1306},{},[1307],{"type":37,"value":1308},"10,2s",{"type":32,"tag":1299,"props":1310,"children":1311},{},[1312],{"type":37,"value":1313},"2,1s",{"type":32,"tag":1299,"props":1315,"children":1316},{},[1317],{"type":37,"value":1318},"-79%",{"type":32,"tag":1267,"props":1320,"children":1321},{},[1322,1327,1332,1337],{"type":32,"tag":1299,"props":1323,"children":1324},{},[1325],{"type":37,"value":1326},"TBT",{"type":32,"tag":1299,"props":1328,"children":1329},{},[1330],{"type":37,"value":1331},"2190ms",{"type":32,"tag":1299,"props":1333,"children":1334},{},[1335],{"type":37,"value":1336},"420ms",{"type":32,"tag":1299,"props":1338,"children":1339},{},[1340],{"type":37,"value":1341},"-81%",{"type":32,"tag":1267,"props":1343,"children":1344},{},[1345,1350,1355,1360],{"type":32,"tag":1299,"props":1346,"children":1347},{},[1348],{"type":37,"value":1349},"CLS",{"type":32,"tag":1299,"props":1351,"children":1352},{},[1353],{"type":37,"value":1354},"0,12",{"type":32,"tag":1299,"props":1356,"children":1357},{},[1358],{"type":37,"value":1359},"0,02",{"type":32,"tag":1299,"props":1361,"children":1362},{},[1363],{"type":37,"value":1364},"-83%",{"type":32,"tag":1267,"props":1366,"children":1367},{},[1368,1373,1378,1383],{"type":32,"tag":1299,"props":1369,"children":1370},{},[1371],{"type":37,"value":1372},"TTFB",{"type":32,"tag":1299,"props":1374,"children":1375},{},[1376],{"type":37,"value":1377},"840ms",{"type":32,"tag":1299,"props":1379,"children":1380},{},[1381],{"type":37,"value":1382},"120ms",{"type":32,"tag":1299,"props":1384,"children":1385},{},[1386],{"type":37,"value":1387},"-86%",{"type":32,"tag":33,"props":1389,"children":1390},{},[1391,1393,1402],{"type":37,"value":1392},"Google Analytics Conversion Funnel: Checkout-Initiierung stieg von 3,2% auf 4,8% (+50% relative Steigerung). Bounce Rate fiel von 68% auf 52%. Search Console: organischer Traffic wuchs in 2 Monaten um 34% (andere SEO-Faktoren konstant). Diese Zahlen entsprechen Roibase-Standards im ",{"type":32,"tag":1394,"props":1395,"children":1399},"a",{"href":1396,"rel":1397},"https:\u002F\u002Fwww.roibase.com.tr\u002Fde\u002Fheadless",[1398],"nofollow",[1400],{"type":37,"value":1401},"Headless Commerce",{"type":37,"value":1403}," – wenn Performance nicht in Business-Metriken mündet, war die Architektur-Änderung nicht erfolgreich.",{"type":32,"tag":40,"props":1405,"children":1407},{"id":1406},"trade-offs-und-entscheidungskriterien",[1408],{"type":37,"value":1409},"Trade-offs und Entscheidungskriterien",{"type":32,"tag":33,"props":1411,"children":1412},{},[1413,1418,1420,1425,1427,1433],{"type":32,"tag":60,"props":1414,"children":1415},{},[1416],{"type":37,"value":1417},"Developer Experience:",{"type":37,"value":1419}," Mit Lazy Hydration Wrappern stieg die Komponenten-API-Komplexität – neue Developer müssen ",{"type":32,"tag":114,"props":1421,"children":1423},{"className":1422},[],[1424],{"type":37,"value":826},{"type":37,"value":1426}," vs. ",{"type":32,"tag":114,"props":1428,"children":1430},{"className":1429},[],[1431],{"type":37,"value":1432},"when-idle",{"type":37,"value":1434}," verstehen. Wir lösten das mit Storybook-Dokumentation + ESLint-Regeln.",{"type":32,"tag":33,"props":1436,"children":1437},{},[1438,1443],{"type":32,"tag":60,"props":1439,"children":1440},{},[1441],{"type":37,"value":1442},"Bundle Size vs. Runtime Cost:",{"type":37,"value":1444}," Self-hosted Font-Dateien addierten +60kB zum initialen Bundle, sparten aber DNS Lookup + TLS Handshake am Runtime ein. Bei 3G Mobile ist das ein Net-Gewinn, bei Fiber-Connection neutral.",{"type":32,"tag":33,"props":1446,"children":1447},{},[1448,1453,1455,1460],{"type":32,"tag":60,"props":1449,"children":1450},{},[1451],{"type":37,"value":1452},"Cache Invalidation:",{"type":37,"value":1454}," Die ",{"type":32,"tag":114,"props":1456,"children":1458},{"className":1457},[],[1459],{"type":37,"value":1018},{"type":37,"value":1461},"-Strategie trägt Risiko von stalen Daten. Kritische Daten wie Lagerstände fetchen wir client-seitig realtime (Polling alle 30s statt WebSocket – niedrigere Edge-Function-Costs).",{"type":32,"tag":33,"props":1463,"children":1464},{},[1465,1470,1471,1476],{"type":32,"tag":60,"props":1466,"children":1467},{},[1468],{"type":37,"value":1469},"Cloudflare Vendor Lock-in:",{"type":37,"value":820},{"type":32,"tag":114,"props":1472,"children":1474},{"className":1473},[],[1475],{"type":37,"value":861},{"type":37,"value":1477}," mit KV-basiertem Caching sind Cloudflare-spezifisch, eine Migration zu Vercel\u002FNetlify erfordert Neuimplementierung. Aber beide Plattformen haben ähnliche Primitives, die Effort ist handhabbar.",{"type":32,"tag":40,"props":1479,"children":1481},{"id":1480},"nächste-schritte",[1482],{"type":37,"value":1483},"Nächste Schritte",{"type":32,"tag":33,"props":1485,"children":1486},{},[1487],{"type":37,"value":1488},"2,1s LCP ist gut, aber CrUX P75 (75. Perzentil) liegt noch bei 3,2s. Unsere Roadmap:",{"type":32,"tag":1490,"props":1491,"children":1492},"ol",{},[1493,1503,1513,1523],{"type":32,"tag":56,"props":1494,"children":1495},{},[1496,1501],{"type":32,"tag":60,"props":1497,"children":1498},{},[1499],{"type":37,"value":1500},"Image CDN + automatische Format-Verhandlung:",{"type":37,"value":1502}," Cloudflare Polish ersetzen mit Imgix-Integration, AVIF-Support",{"type":32,"tag":56,"props":1504,"children":1505},{},[1506,1511],{"type":32,"tag":60,"props":1507,"children":1508},{},[1509],{"type":37,"value":1510},"Prefetch-Strategie:",{"type":37,"value":1512}," Intersection Observer – wenn Produktkarten ins Viewport rücken, ihre Daten prefetchen",{"type":32,"tag":56,"props":1514,"children":1515},{},[1516,1521],{"type":32,"tag":60,"props":1517,"children":1518},{},[1519],{"type":37,"value":1520},"Service Worker + offline-first:",{"type":37,"value":1522}," Workbox für criticals Assets, network-first Fallback",{"type":32,"tag":56,"props":1524,"children":1525},{},[1526,1531],{"type":32,"tag":60,"props":1527,"children":1528},{},[1529],{"type":37,"value":1530},"Aggressives Bundle Splitting:",{"type":37,"value":1532}," Nuxt 3's Code Splitting maximieren, Route-basiertes Chunking",{"type":32,"tag":33,"props":1534,"children":1535},{},[1536],{"type":37,"value":1537},"Performance-Optimierung ist ein Endspiel – jede 100ms bringt ~1–2% Conversion Lift. Nuxt 3 + Cloudflare Pages kombinieren Edge Rendering mit moderner JavaScript-Framework-Ergonomie. Bei Stack-Entscheidungen sollte LCP als Business Requirement definiert werden – dann folgt die Architektur-Bewertung diesem Constraint.",{"type":32,"tag":380,"props":1539,"children":1540},{},[1541],{"type":37,"value":1542},"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":1544},[1545,1546,1547,1549,1550,1551,1552,1553],{"id":42,"depth":170,"text":45},{"id":104,"depth":170,"text":107},{"id":568,"depth":170,"text":1548},"Selective Hydration + content-visibility",{"id":831,"depth":170,"text":834},{"id":1038,"depth":170,"text":1041},{"id":1249,"depth":170,"text":1252},{"id":1406,"depth":170,"text":1409},{"id":1480,"depth":170,"text":1483},"markdown","content:de:tech:nuxt-3-cloudflare-pages-lcp-optimierung.md","content","de\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimierung.md","de\u002Ftech\u002Fnuxt-3-cloudflare-pages-lcp-optimierung","md",1778164175679]