[{"data":1,"prerenderedAt":246},["ShallowReactive",2],{"hub:guides-comparisons":3},{"path":4,"key":5,"title":6,"h1":7,"description":8,"crumbs":9,"blocks":17},"\u002Fguides\u002Fcomparisons\u002F","guides-comparisons","SSG, Framework and Hosting Comparisons","Comparisons","Side-by-side comparisons of static site generators, docs frameworks, hosts and techniques, measured on the same content and hardware, not asserted.",[10,13,16],[11,12],"Home","\u002F",[14,15],"Guides","\u002Fguides\u002F",[7,4],[18,21,23,26,54,56,75,82,89,100,111,118,125,132,147,158,160,171,178,185,192,199,210,217,224,231],{"k":19,"text":20},"p","Comparisons are where static site advice is weakest elsewhere: feature tables copied from project homepages, benchmarks on a hello-world site, conclusions that were decided before the test. The comparisons here are run on the same real content for every option — the same 2,000-page documentation corpus for the docs frameworks, the same 10,000 pages for Astro against Eleventy — on the same machine, with the method written down so it can be reproduced.",{"k":19,"text":22},"Many end without a single winner, because the honest answer depends on the site: Hugo builds fastest, Astro ships the least JavaScript, Docusaurus has versioning built in. What each comparison gives you is the criteria that decide it for your case, and the measured numbers to decide with.",{"k":24,"html":25},"fig","\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 236\" role=\"img\" aria-labelledby=\"hub-comparisons-hero-title hub-comparisons-hero-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-comparisons-hero-title\">Conditions every comparison on the site holds constant\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-comparisons-hero-desc\">A matrix of four conditions and why each matters. Same content, because content shape changes results. Same hardware, because CPU and memory dominate build times. Same features enabled, such as search and highlighting. Several runs with medians, because single runs are noisy.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"236\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Cpath d=\"M20.0 86.0 L740.0 86.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Crect x=\"214.0\" y=\"90.0\" width=\"257.0\" height=\"25.6\" rx=\"5\" fill=\"#1982c4\" opacity=\"0.14\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M20.0 119.6 L740.0 119.6\" fill=\"none\" stroke=\"#d9e2ef\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"214.0\" y=\"123.6\" width=\"257.0\" height=\"25.6\" rx=\"5\" fill=\"#1982c4\" opacity=\"0.14\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M20.0 153.2 L740.0 153.2\" fill=\"none\" stroke=\"#d9e2ef\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"214.0\" y=\"157.2\" width=\"257.0\" height=\"25.6\" rx=\"5\" fill=\"#1982c4\" opacity=\"0.14\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M20.0 186.8 L740.0 186.8\" fill=\"none\" stroke=\"#d9e2ef\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"214.0\" y=\"190.8\" width=\"257.0\" height=\"25.6\" rx=\"5\" fill=\"#1982c4\" opacity=\"0.14\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M20.0 220.4 L740.0 220.4\" fill=\"none\" stroke=\"#d9e2ef\" style=\"stroke-width:1px\"\u002F>\n    \u003Ctext x=\"380.0\" y=\"30.0\" fill=\"#1f2937\" style=\"font-size:16px;text-anchor:middle;font-weight:700\">What makes a comparison fair\u003C\u002Ftext>\n    \u003Ctext x=\"30.0\" y=\"75.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">Held constant\u003C\u002Ftext>\n    \u003Ctext x=\"342.5\" y=\"75.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">Why it matters\u003C\u002Ftext>\n    \u003Ctext x=\"607.5\" y=\"75.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">How\u003C\u002Ftext>\n    \u003Ctext x=\"30.0\" y=\"106.4\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">Content\u003C\u002Ftext>\n    \u003Ctext x=\"342.5\" y=\"106.2\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:middle\">shape changes results\u003C\u002Ftext>\n    \u003Ctext x=\"607.5\" y=\"106.2\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:middle\">same real corpus\u003C\u002Ftext>\n    \u003Ctext x=\"30.0\" y=\"140.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">Hardware\u003C\u002Ftext>\n    \u003Ctext x=\"342.5\" y=\"139.8\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:middle\">CPU and memory dominate\u003C\u002Ftext>\n    \u003Ctext x=\"607.5\" y=\"139.8\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:middle\">same runner\u003C\u002Ftext>\n    \u003Ctext x=\"30.0\" y=\"173.6\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">Features\u003C\u002Ftext>\n    \u003Ctext x=\"342.5\" y=\"173.4\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:middle\">search and highlighting cost\u003C\u002Ftext>\n    \u003Ctext x=\"607.5\" y=\"173.4\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:middle\">enabled in all\u003C\u002Ftext>\n    \u003Ctext x=\"30.0\" y=\"207.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">Repetition\u003C\u002Ftext>\n    \u003Ctext x=\"342.5\" y=\"207.0\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:middle\">single runs are noisy\u003C\u002Ftext>\n    \u003Ctext x=\"607.5\" y=\"207.0\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:middle\">median of 5+\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>When a comparison cannot hold one of these constant, it says so next to the result.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":28,"items":29},"group","Astro vs Eleventy for Documentation Sites",[30,34,38,42,46,50],{"t":31,"u":32,"d":33},"Astro vs Eleventy Build Times at 10,000 Pages","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fastro-vs-eleventy-for-documentation-sites\u002Fastro-vs-eleventy-build-times-at-10000-pages\u002F","Astro and Eleventy benchmarked on the same docs corpus from 1,000 to 10,000 pages: cold, warm and one-page-edit builds, memory, and where each scales badly.",{"t":35,"u":36,"d":37},"Astro vs Eleventy for Large Docs (1000+ Pages)","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fastro-vs-eleventy-for-documentation-sites\u002Fchoosing-between-astro-and-eleventy-for-large-docs\u002F","A decision guide for documentation sites of 1000+ pages — comparing Astro and Eleventy on build scaling, search, MDX\u002Fcomponents, and authoring ergonomics with measured numbers.",{"t":39,"u":40,"d":41},"Content Collections vs the Eleventy Data Cascade","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fastro-vs-eleventy-for-documentation-sites\u002Fcontent-collections-vs-eleventy-data-cascade\u002F","Two ways to model documentation content: a typed schema that fails the build, or a layered cascade that resolves at render. What each buys, and how to get validation in both.",{"t":43,"u":44,"d":45},"Dev Server Performance: Astro vs Eleventy","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fastro-vs-eleventy-for-documentation-sites\u002Fdev-server-performance-astro-vs-eleventy\u002F","Measure cold start, hot reload and memory for Astro and Eleventy dev servers on a 1,300-page docs site, and the settings that keep writers’ previews fast.",{"t":47,"u":48,"d":49},"Markdown Pipelines: remark vs markdown-it","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fastro-vs-eleventy-for-documentation-sites\u002Fmarkdown-pipelines-remark-vs-markdown-it\u002F","Compare the remark and rehype pipeline in Astro with markdown-it in Eleventy: plugin models, speed, custom syntax, heading anchors and link rewriting.",{"t":51,"u":52,"d":53},"Shortcodes vs Components for Docs Authors","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fastro-vs-eleventy-for-documentation-sites\u002Fshortcodes-vs-components-for-docs-authors\u002F","Eleventy shortcodes and Astro components compared from the writer's chair: syntax, error messages, reuse, JavaScript cost and how to keep the vocabulary small.",{"k":24,"html":55},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 346\" role=\"img\" aria-labelledby=\"hub-comparisons-topics-title hub-comparisons-topics-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-comparisons-topics-title\">Number of comparisons per topic, largest first\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-comparisons-topics-desc\">Horizontal bars. Astro vs Eleventy for Documentation Sites 6, Docs Frameworks: Docusaurus, Starlight and VitePress 4, Font Loading Strategies for Static Sites 3, Next.js Static Export for Content Sites 2, Search for Static Sites 2, JavaScript Hydration &amp; Partial Rendering 2, Performance Budgets and Lighthouse CI 2 and Netlify vs Vercel Deployment Strategies 2.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"346\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"350.0\" y=\"65.0\" width=\"365.6\" height=\"20.0\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"99.0\" width=\"243.7\" height=\"20.0\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"133.0\" width=\"182.8\" height=\"20.0\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"167.0\" width=\"121.9\" height=\"20.0\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"201.0\" width=\"121.9\" height=\"20.0\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"235.0\" width=\"121.9\" height=\"20.0\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"269.0\" width=\"121.9\" height=\"20.0\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"303.0\" width=\"121.9\" height=\"20.0\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M350.0 60.0 L350.0 328.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ctext x=\"380.0\" y=\"30.0\" fill=\"#1f2937\" style=\"font-size:16px;text-anchor:middle;font-weight:700\">Topics with the most comparisons\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"79.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Astro vs Eleventy for Documentation…\u003C\u002Ftext>\n    \u003Ctext x=\"723.6\" y=\"79.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">6\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"113.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Docs Frameworks: Docusaurus, Starlight…\u003C\u002Ftext>\n    \u003Ctext x=\"601.7\" y=\"113.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">4\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"147.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Font Loading Strategies\u003C\u002Ftext>\n    \u003Ctext x=\"540.8\" y=\"147.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">3\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"181.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Next.js Static Export for Content Sites\u003C\u002Ftext>\n    \u003Ctext x=\"479.9\" y=\"181.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"215.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Search\u003C\u002Ftext>\n    \u003Ctext x=\"479.9\" y=\"215.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"249.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">JavaScript Hydration &amp; Partial Rendering\u003C\u002Ftext>\n    \u003Ctext x=\"479.9\" y=\"249.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"283.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Performance Budgets and Lighthouse CI\u003C\u002Ftext>\n    \u003Ctext x=\"479.9\" y=\"283.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"317.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Netlify vs Vercel Deployment Strategies\u003C\u002Ftext>\n    \u003Ctext x=\"479.9\" y=\"317.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">2\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>The 8 topics with the most comparisons, out of 20 topics that have any.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":57,"items":58},"Docs Frameworks: Docusaurus, Starlight and VitePress",[59,63,67,71],{"t":60,"u":61,"d":62},"Comparing Docs Framework Build Times","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fdocs-frameworks-docusaurus-starlight-vitepress\u002Fcomparing-docs-framework-build-times\u002F","Benchmark Docusaurus, Starlight and VitePress on the same 2,000-page docs corpus: cold and warm builds, memory, output size and what drives each number.",{"t":64,"u":65,"d":66},"Docusaurus vs Starlight for Product Documentation","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fdocs-frameworks-docusaurus-starlight-vitepress\u002Fdocusaurus-vs-starlight-for-product-documentation\u002F","A head-to-head port of a 640-page SaaS docs site to Docusaurus and Starlight: build time, JavaScript shipped, field INP, authoring friction and upgrade cost.",{"t":68,"u":69,"d":70},"MDX vs Markdoc for Docs Content","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fdocs-frameworks-docusaurus-starlight-vitepress\u002Fmdx-vs-markdoc-for-docs-content\u002F","Choose between MDX and Markdoc for documentation components: authoring errors, validation, build speed and safety for contributor-heavy docs repos.",{"t":72,"u":73,"d":74},"VitePress vs Starlight for Vue and Astro Teams","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fdocs-frameworks-docusaurus-starlight-vitepress\u002Fvitepress-vs-starlight-for-vue-and-astro-teams\u002F","VitePress and Starlight compared on the same 500-page docs set: build time, page weight, search, i18n, customisation and which team each one suits.",{"k":27,"h":76,"items":77},"Internationalization for Static Sites",[78],{"t":79,"u":80,"d":81},"Subdirectories vs Subdomains for Translated Static Sites","\u002Fchoosing-the-right-static-site-generator-for-production\u002Finternationalization-for-static-sites\u002Fsubdirectories-vs-subdomains-for-translated-static-sites\u002F","Compare subdirectories, subdomains and country domains for a translated static site on build setup, hosting, caching, SEO and cost, with measured numbers.",{"k":27,"h":83,"items":84},"Jekyll Plugin Ecosystem",[85],{"t":86,"u":87,"d":88},"Eleventy vs Jekyll for Markdown-Heavy Blogs","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fjekyll-plugin-ecosystem\u002Feleventy-vs-jekyll-for-markdown-heavy-blogs\u002F","For thousands of Markdown files, compare Eleventy and Jekyll on parser config, data cascade, incremental-build reliability, and real build numbers from a 5,000-post corpus.",{"k":27,"h":90,"items":91},"Next.js Static Export for Content Sites",[92,96],{"t":93,"u":94,"d":95},"Next.js Static Export vs Astro for Marketing","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fnextjs-static-export-for-content-sites\u002Fnextjs-static-export-vs-astro-for-marketing-sites\u002F","A measured head-to-head of Next.js static export and Astro for marketing sites — JavaScript shipped, LCP and INP, developer experience, and build speed on the same pages.",{"t":97,"u":98,"d":99},"Next.js Static Export vs Gatsby for Existing React Sites","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fnextjs-static-export-for-content-sites\u002Fnextjs-static-export-vs-gatsby-for-existing-react-sites\u002F","For a React team on Gatsby, compare staying with Gatsby against moving to Next.js static export: build time, page weight, ecosystem health and migration effort.",{"k":27,"h":101,"items":102},"Search for Static Sites",[103,107],{"t":104,"u":105,"d":106},"Pagefind vs Algolia DocSearch","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fsearch-for-static-sites\u002Fpagefind-vs-algolia-docsearch\u002F","Build-time Pagefind against hosted Algolia DocSearch on one 2,000-page docs site: relevance, latency, freshness, analytics, privacy and total cost.",{"t":108,"u":109,"d":110},"Pagefind vs Lunr for Small Documentation Sites","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fsearch-for-static-sites\u002Fpagefind-vs-lunr-for-small-documentation-sites\u002F","Pagefind and Lunr compared on a 150-page docs site: index size, first-query time, relevance, setup effort and maintenance, with the crossover point measured.",{"k":27,"h":112,"items":113},"SSG Framework Selection Matrix",[114],{"t":115,"u":116,"d":117},"Gatsby vs Astro for Content Sites in 2026","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fgatsby-vs-astro-for-content-sites-in-2026\u002F","Gatsby and Astro compared for content sites today: build time, JavaScript shipped, Core Web Vitals, ecosystem health and the cost of moving.",{"k":27,"h":119,"items":120},"CDN Caching Rules for SSGs",[121],{"t":122,"u":123,"d":124},"Cloudflare vs CloudFront Cache Hit Ratios for Static Sites","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fcdn-caching-rules-for-ssgs\u002Fcloudflare-vs-cloudfront-cache-hit-ratios-for-static-sites\u002F","Cloudflare and CloudFront measured serving the same static site: cache hit ratio, origin requests, TTFB by region and cost, plus the settings that moved each.",{"k":27,"h":126,"items":127},"CSS and JavaScript Asset Optimization",[128],{"t":129,"u":130,"d":131},"SVG Icon Sprites vs Inline Icons","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fcss-and-javascript-asset-optimization\u002Fsvg-icon-sprites-vs-inline-icons\u002F","Replace icon fonts on a static site with inline SVG or an external sprite, compare bytes, requests and paint timing, and build the sprite at build time.",{"k":27,"h":133,"items":134},"Font Loading Strategies for Static Sites",[135,139,143],{"t":136,"u":137,"d":138},"Self-Hosted Fonts vs Google Fonts for Static Sites","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Ffont-loading-strategies-for-static-sites\u002Fself-hosted-fonts-vs-google-fonts-for-static-sites\u002F","Self-hosted fonts and Google Fonts measured on the same static site: connections, LCP, CLS, caching, privacy and maintenance, and when each wins.",{"t":140,"u":141,"d":142},"Variable Fonts vs Static Weights","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Ffont-loading-strategies-for-static-sites\u002Fvariable-fonts-vs-static-weights\u002F","Decide between one variable font file and several static weights on a static site: bytes per weight count, subsetting, axis ranges, rendering and caching.",{"t":144,"u":145,"d":146},"font-display: optional vs swap","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Ffont-loading-strategies-for-static-sites\u002Ffont-display-optional-vs-swap\u002F","font-display swap always shows your web font but can shift layout; optional never shifts but may skip the font. How to choose per font on a static site.",{"k":27,"h":148,"items":149},"JavaScript Hydration & Partial Rendering",[150,154],{"t":151,"u":152,"d":153},"Astro Islands vs Full Hydration Performance","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fjavascript-hydration-partial-rendering\u002Fastro-islands-vs-full-hydration-performance\u002F","Measured comparison of Astro islands against full SPA hydration — JavaScript bytes, Total Blocking Time, and INP numbers, plus which directive to reach for.",{"t":155,"u":156,"d":157},"Preact vs React Islands Bundle Size","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fjavascript-hydration-partial-rendering\u002Fpreact-vs-react-islands-bundle-size\u002F","Measure React against Preact for Astro islands: runtime size, hydration time, compatibility gaps with preact\u002Fcompat, and when switching is worth the effort.",{"k":24,"html":159},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 295\" role=\"img\" aria-labelledby=\"hub-comparisons-sections-title hub-comparisons-sections-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-comparisons-sections-title\">Number of comparisons in each section\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-comparisons-sections-desc\">Vertical bars: Framework selection 17, Performance 11 and Deployment 7. As a share of all guides in the section: Framework selection 14%, Performance 11%, Deployment 6%.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"295\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"108.3\" y=\"76.0\" width=\"90.0\" height=\"170.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"335.0\" y=\"136.0\" width=\"90.0\" height=\"110.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"561.7\" y=\"176.0\" width=\"90.0\" height=\"70.0\" rx=\"3\" fill=\"#8ac926\" opacity=\"0.4\" stroke=\"#5a8a16\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M30.0 246.0 L730.0 246.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ctext x=\"380.0\" y=\"30.0\" fill=\"#1f2937\" style=\"font-size:16px;text-anchor:middle;font-weight:700\">Comparisons in each section\u003C\u002Ftext>\n    \u003Ctext x=\"153.3\" y=\"69.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">17\u003C\u002Ftext>\n    \u003Ctext x=\"153.3\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Framework selection\u003C\u002Ftext>\n    \u003Ctext x=\"380.0\" y=\"129.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">11\u003C\u002Ftext>\n    \u003Ctext x=\"380.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Performance\u003C\u002Ftext>\n    \u003Ctext x=\"606.7\" y=\"169.0\" fill=\"#3f6410\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">7\u003C\u002Ftext>\n    \u003Ctext x=\"606.7\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Deployment\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>35 comparisons in total. As a share of each section: framework selection 14%, performance 11%, deployment 6%.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":161,"items":162},"Performance Budgets and Lighthouse CI",[163,167],{"t":164,"u":165,"d":166},"Comparing Lab and Field Data with CrUX","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fperformance-budgets-and-lighthouse-ci\u002Fcomparing-lab-and-field-data-with-crux\u002F","Pull Chrome UX Report data for your origin and key URLs, line it up against Lighthouse lab numbers per template, and use the gap to set better budgets.",{"t":168,"u":169,"d":170},"Lighthouse CI vs WebPageTest for Regression Gates","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fperformance-budgets-and-lighthouse-ci\u002Flighthouse-ci-vs-webpagetest-for-regression-gates\u002F","Lighthouse CI and WebPageTest compared as pull request performance gates on a static site: variance, regressions caught, false alarms, speed and cost.",{"k":27,"h":172,"items":173},"Resource Hints and Navigation Speed",[174],{"t":175,"u":176,"d":177},"Preconnect vs DNS-Prefetch on Static Sites","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fresource-hints-and-navigation-speed\u002Fpreconnect-vs-dns-prefetch-on-static-sites\u002F","When to use preconnect, when dns-prefetch is enough, and when neither helps — measured on a static blog with an image CDN, analytics and embedded video.",{"k":27,"h":179,"items":180},"Third-Party Script Performance on Static Sites",[181],{"t":182,"u":183,"d":184},"Privacy-Friendly Analytics Compared by Page Weight","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fthird-party-script-performance-on-static-sites\u002Fprivacy-friendly-analytics-compared-by-page-weight\u002F","Plausible, Fathom, Umami, Cloudflare Web Analytics and GA4 measured on one static site: script size, main-thread time, requests, cookies and what each reports.",{"k":27,"h":186,"items":187},"Content Workflows for Documentation Teams",[188],{"t":189,"u":190,"d":191},"Git-Based CMS Options for Static Sites Compared","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcontent-workflows-for-documentation-teams\u002Fgit-based-cms-options-for-static-sites-compared\u002F","Decap, TinaCMS, Sveltia, CloudCannon and Keystatic compared on one static site: editor experience, preview, Git workflow, setup effort, cost and lock-in.",{"k":27,"h":193,"items":194},"Incremental Builds and Build Caching for SSGs",[195],{"t":196,"u":197,"d":198},"Incremental Rebuild Times Across Astro, Eleventy and Hugo","\u002Fproduction-ready-deployment-cicd-workflows\u002Fincremental-builds-and-build-caching-for-ssgs\u002Fincremental-rebuild-times-across-astro-eleventy-and-hugo\u002F","Astro, Eleventy and Hugo measured on the same 5,000-page site for full, cached and single-page rebuilds, in CI and the dev server, with what each skips.",{"k":27,"h":200,"items":201},"Netlify vs Vercel Deployment Strategies",[202,206],{"t":203,"u":204,"d":205},"Static Site Bandwidth Pricing: Netlify, Vercel, Cloudflare","\u002Fproduction-ready-deployment-cicd-workflows\u002Fnetlify-vs-vercel-deployment-strategies\u002Fbandwidth-pricing-for-static-sites-across-netlify-vercel-and-cloudflare\u002F","Model monthly hosting cost for a static site on Netlify, Vercel and Cloudflare at four traffic levels, with the levers that cut bandwidth by half or more.",{"t":207,"u":208,"d":209},"Vercel ISR vs Static Generation for SSGs","\u002Fproduction-ready-deployment-cicd-workflows\u002Fnetlify-vs-vercel-deployment-strategies\u002Fvercel-isr-vs-static-generation-for-ssgs\u002F","ISR rebuilds pages on demand; static generation builds everything upfront. Astro, Eleventy, Hugo, and Jekyll have no ISR — they rebuild and purge at the CDN.",{"k":27,"h":211,"items":212},"Rollbacks and Deploy Safety for Static Sites",[213],{"t":214,"u":215,"d":216},"Atomic Deploys vs Incremental Uploads","\u002Fproduction-ready-deployment-cicd-workflows\u002Frollbacks-and-deploy-safety-for-static-sites\u002Fatomic-deploys-vs-incremental-uploads\u002F","Why syncing files into a live bucket serves broken pages, how atomic publishing works, and how to build atomicity yourself on S3, object storage or a VM origin.",{"k":27,"h":218,"items":219},"Self-Hosting Static Sites on S3, Nginx and Caddy",[220],{"t":221,"u":222,"d":223},"Nginx vs Caddy for Serving Static Sites","\u002Fproduction-ready-deployment-cicd-workflows\u002Fself-hosting-static-sites\u002Fnginx-vs-caddy-for-serving-static-sites\u002F","Nginx and Caddy compared serving the same static site: throughput, latency, memory, TLS automation, config size, compression and the mistakes each one invites.",{"k":27,"h":225,"items":226},"Serverless Functions for Static Sites",[227],{"t":228,"u":229,"d":230},"Netlify Functions vs Cloudflare Workers","\u002Fproduction-ready-deployment-cicd-workflows\u002Fserverless-functions-for-static-sites\u002Fnetlify-functions-vs-cloudflare-workers\u002F","The same three functions on Netlify and Cloudflare, measured: cold starts, global latency, limits, local development, storage and cost for a static site.",{"k":27,"h":232,"items":233},"Other kinds of guide",[234,238,242],{"t":235,"u":236,"d":237},"How-tos","\u002Fguides\u002Fhow-to\u002F","A task, end to end, with configuration and measured results.",{"t":239,"u":240,"d":241},"Fixes","\u002Fguides\u002Ffixes\u002F","Starts from a symptom and ends at the cause and the fix.",{"t":243,"u":244,"d":245},"Concepts","\u002Fguides\u002Fconcepts\u002F","Explains how something works and when it matters.",1790943190465]