[{"data":1,"prerenderedAt":142},["ShallowReactive",2],{"hub:tools-netlify":3},{"path":4,"key":5,"title":6,"h1":7,"description":8,"crumbs":9,"blocks":17},"\u002Ftools\u002Fnetlify\u002F","tools-netlify","Netlify for Static Sites: Guides","Netlify","Guides for static sites on Netlify: cache headers, redirects, deploy previews, build hooks, edge functions and build caching.",[10,13,16],[11,12],"Home","\u002F",[14,15],"Tools","\u002Ftools\u002F",[7,4],[18,21,23,26,35,37,48,109,111],{"k":19,"text":20},"p","Netlify popularised the workflow most static sites now take for granted: push to Git, get a deploy preview per pull request, merge to publish, roll back with a click. The guides below cover using it well at scale — headers and cache rules that actually reach the CDN, redirect files with thousands of rules, build hooks for CMS content, build caches for generators Netlify does not recognise, and edge functions for the few requests that need code.",{"k":19,"text":22},"Where Netlify and Vercel differ in ways that matter for a static site, the comparisons at the top measure both on the same project.",{"k":24,"html":25},"fig","\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 152\" role=\"img\" aria-labelledby=\"hub-netlify-hero-title hub-netlify-hero-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-netlify-hero-title\">The Netlify workflow covered by these guides\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-netlify-hero-desc\">Five stages. A pull request triggers a build with a restored cache. A deploy preview gets its own URL. Headers, redirects and edge functions apply at request time. Merge publishes atomically. Rollback restores any previous deploy.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"152\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"20.0\" y=\"64.0\" width=\"116.8\" height=\"71.5\" rx=\"8\" fill=\"#1982c4\" opacity=\"0.14\" stroke=\"#1982c4\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Crect x=\"170.8\" y=\"64.0\" width=\"116.8\" height=\"71.5\" rx=\"8\" fill=\"#ffca3a\" opacity=\"0.24\" stroke=\"#a97b00\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M138.8 99.8 L166.8 99.8\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-netlify-hero-arrow)\"\u002F>\n    \u003Crect x=\"321.6\" y=\"64.0\" width=\"116.8\" height=\"71.5\" rx=\"8\" fill=\"#6a4c93\" opacity=\"0.14\" stroke=\"#6a4c93\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M289.6 99.8 L317.6 99.8\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-netlify-hero-arrow)\"\u002F>\n    \u003Crect x=\"472.4\" y=\"64.0\" width=\"116.8\" height=\"71.5\" rx=\"8\" fill=\"#8ac926\" opacity=\"0.2\" stroke=\"#5a8a16\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M440.4 99.8 L468.4 99.8\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-netlify-hero-arrow)\"\u002F>\n    \u003Crect x=\"623.2\" y=\"64.0\" width=\"116.8\" height=\"71.5\" rx=\"8\" fill=\"#f8fafc\" stroke=\"#d9e2ef\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M591.2 99.8 L619.2 99.8\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-netlify-hero-arrow)\"\u002F>\n    \u003Ctext x=\"380.0\" y=\"30.0\" fill=\"#1f2937\" style=\"font-size:16px;text-anchor:middle;font-weight:700\">A change through Netlify\u003C\u002Ftext>\n    \u003Ctext x=\"78.4\" y=\"97.5\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Build\u003C\u002Ftext>\n    \u003Ctext x=\"78.4\" y=\"114.4\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">cache restored\u003C\u002Ftext>\n    \u003Ctext x=\"229.2\" y=\"97.5\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Preview\u003C\u002Ftext>\n    \u003Ctext x=\"229.2\" y=\"114.4\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">per pull request\u003C\u002Ftext>\n    \u003Ctext x=\"380.0\" y=\"90.4\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Rules\u003C\u002Ftext>\n    \u003Ctext x=\"380.0\" y=\"107.3\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">headers,\u003C\u002Ftext>\n    \u003Ctext x=\"380.0\" y=\"121.6\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">redirects, edge\u003C\u002Ftext>\n    \u003Ctext x=\"530.8\" y=\"97.5\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Publish\u003C\u002Ftext>\n    \u003Ctext x=\"530.8\" y=\"114.4\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">atomic\u003C\u002Ftext>\n    \u003Ctext x=\"681.6\" y=\"90.4\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Rollback\u003C\u002Ftext>\n    \u003Ctext x=\"681.6\" y=\"107.3\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">any previous\u003C\u002Ftext>\n    \u003Ctext x=\"681.6\" y=\"121.6\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">deploy\u003C\u002Ftext>\n  \u003C\u002Fg>\n  \u003Cdefs>\n    \u003Cmarker id=\"hub-netlify-hero-arrow\" viewBox=\"0 0 10 10\" refX=\"8\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\n      \u003Cpath d=\"M0 0 L10 5 L0 10 z\" fill=\"#556071\"\u002F>\n    \u003C\u002Fmarker>\n  \u003C\u002Fdefs>\n\u003C\u002Fsvg>\n\u003Cfigcaption>Guides below cover each stage; caching and redirects have the most.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":28,"items":29},"group","Choosing the Right Static Site Generator for Production",[30],{"t":31,"u":32,"d":33,"y":34},"robots.txt and noindex for Preview and Staging","\u002Fchoosing-the-right-static-site-generator-for-production\u002Ftechnical-seo-for-static-sites\u002Frobots-txt-and-noindex-for-preview-and-staging\u002F","Keep preview, staging and platform-host copies of a static site out of search results with X-Robots-Tag headers on Netlify, Vercel and Cloudflare.","How-to",{"k":24,"html":36},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 295\" role=\"img\" aria-labelledby=\"hub-netlify-kinds-title hub-netlify-kinds-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-netlify-kinds-title\">Number of Netlify guides of each kind\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-netlify-kinds-desc\">Vertical bars: How-tos 12, Fixes 2, Comparisons 3 and Concepts 0.\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=\"80.0\" y=\"76.0\" width=\"90.0\" height=\"170.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"250.0\" y=\"217.7\" width=\"90.0\" height=\"28.3\" rx=\"3\" fill=\"#ff595e\" opacity=\"0.3\" stroke=\"#d83b41\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"420.0\" y=\"203.5\" width=\"90.0\" height=\"42.5\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"590.0\" y=\"243.0\" width=\"90.0\" height=\"3.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" 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\">Netlify guides by kind\u003C\u002Ftext>\n    \u003Ctext x=\"125.0\" y=\"69.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">12\u003C\u002Ftext>\n    \u003Ctext x=\"125.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">How-tos\u003C\u002Ftext>\n    \u003Ctext x=\"295.0\" y=\"210.7\" fill=\"#b32b30\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"295.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Fixes\u003C\u002Ftext>\n    \u003Ctext x=\"465.0\" y=\"196.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">3\u003C\u002Ftext>\n    \u003Ctext x=\"465.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Comparisons\u003C\u002Ftext>\n    \u003Ctext x=\"635.0\" y=\"236.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">0\u003C\u002Ftext>\n    \u003Ctext x=\"635.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Concepts\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>17 guides use Netlify in depth; each is listed below under the section it belongs to.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":38,"items":39},"Core Web Vitals Optimization for SSGs",[40,44],{"t":41,"u":42,"d":43,"y":34},"Building an Image CDN Pipeline for Static Sites","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fimage-optimization-pipelines-in-astro\u002Fbuilding-an-image-cdn-pipeline-for-static-sites\u002F","When to offload image transforms to an image CDN versus build time: URL-based transforms, edge caching, and cost, compared across Cloudflare Images, imgix, and Netlify.",{"t":45,"u":46,"d":47,"y":34},"Proper Cache Headers on Netlify for SSGs","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fcdn-caching-rules-for-ssgs\u002Fsetting-up-proper-cache-headers-on-netlify\u002F","Configure Cache-Control headers in Netlify _headers files — fingerprinted assets cached for a year, HTML revalidated every request, with exact Netlify syntax and curl verification.",{"k":27,"h":49,"items":50},"Production-Ready Deployment & CI\u002FCD for SSGs",[51,56,60,64,68,72,76,80,84,88,92,96,100,105],{"t":52,"u":53,"d":54,"y":55},"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.","Comparison",{"t":57,"u":58,"d":59,"y":55},"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":61,"u":62,"d":63,"y":55},"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.",{"t":65,"u":66,"d":67,"y":34},"Build Caching on Netlify and Vercel","\u002Fproduction-ready-deployment-cicd-workflows\u002Fincremental-builds-and-build-caching-for-ssgs\u002Fbuild-caching-on-netlify-and-vercel\u002F","Make Netlify and Vercel reuse dependency, framework and image caches between static site builds, verify cache hits in logs, and measure the savings.",{"t":69,"u":70,"d":71,"y":34},"Netlify Build Hooks for Content Updates","\u002Fproduction-ready-deployment-cicd-workflows\u002Fnetlify-vs-vercel-deployment-strategies\u002Fnetlify-build-hooks-for-content-updates\u002F","Trigger Netlify rebuilds from a headless CMS without a Git push. Create, secure, time, and debug Netlify build hooks for automated static site content updates.",{"t":73,"u":74,"d":75,"y":34},"Netlify Deploy Previews for Every Pull Request","\u002Fproduction-ready-deployment-cicd-workflows\u002Fnetlify-vs-vercel-deployment-strategies\u002Fsetting-up-deploy-previews-on-netlify-for-every-pull-request\u002F","Turn on Netlify Deploy Previews so every PR gets its own built URL — config, the unique deploy-preview link, scoped env vars, and the automatic PR comment.",{"t":77,"u":78,"d":79,"y":34},"Netlify Edge Functions for Static Sites","\u002Fproduction-ready-deployment-cicd-workflows\u002Fnetlify-vs-vercel-deployment-strategies\u002Fnetlify-edge-functions-for-static-sites\u002F","Add small pieces of request-time logic to a static site on Netlify with Edge Functions: geolocation, rewrites, header changes and HTML transforms, scoped and cached.",{"t":81,"u":82,"d":83,"y":34},"Netlify Redirects and Rewrites for Static Sites","\u002Fproduction-ready-deployment-cicd-workflows\u002Fnetlify-vs-vercel-deployment-strategies\u002Fnetlify-redirects-and-rewrites-for-static-sites\u002F","Write Netlify redirects and rewrites in _redirects or netlify.toml: status codes, splats, placeholders, shadowing, proxying and country or language rules.",{"t":85,"u":86,"d":87,"y":34},"Rolling Back Netlify Deploys From the CLI and API","\u002Fproduction-ready-deployment-cicd-workflows\u002Frollbacks-and-deploy-safety-for-static-sites\u002Frolling-back-netlify-deploys-from-the-cli-and-api\u002F","Roll back a Netlify site to an earlier deploy from the API, the CLI or a GitHub Actions button, lock auto-publishing during incidents, and verify the restore.",{"t":89,"u":90,"d":91,"y":34},"Securing Deploy Credentials with GitHub OIDC","\u002Fproduction-ready-deployment-cicd-workflows\u002Fsecurity-headers-for-static-sites\u002Fsecuring-deploy-credentials-with-github-oidc\u002F","Replace long-lived deploy tokens with short-lived OIDC credentials in GitHub Actions for AWS, Cloudflare and Netlify, scoped to one branch and one deploy job.",{"t":93,"u":94,"d":95,"y":34},"Testing Redirects and Headers Before Deploy","\u002Fproduction-ready-deployment-cicd-workflows\u002Ftesting-static-sites-in-ci\u002Ftesting-redirects-and-headers-before-deploy\u002F","Table-driven tests for redirects, cache and security headers on a static site, generated from the redirect map and run against every preview before production.",{"t":97,"u":98,"d":99,"y":34},"Vercel Build Output API for Custom SSGs","\u002Fproduction-ready-deployment-cicd-workflows\u002Fnetlify-vs-vercel-deployment-strategies\u002Fvercel-build-output-api-for-custom-ssgs\u002F","Deploy any static site generator to Vercel with the Build Output API: static files, headers, redirects, cache rules and an optional edge function.",{"t":101,"u":102,"d":103,"y":104},"Fixing Cold Starts in Netlify Functions for Forms","\u002Fproduction-ready-deployment-cicd-workflows\u002Fserverless-functions-for-static-sites\u002Ffixing-cold-starts-in-netlify-functions-for-forms\u002F","Measure and cut cold-start latency in a Netlify Function behind a static site's form: smaller bundles, lazy imports, regions and honest UI states.","Fix",{"t":106,"u":107,"d":108,"y":104},"Fixing Netlify Builds That Exceed the Time Limit","\u002Fproduction-ready-deployment-cicd-workflows\u002Fnetlify-vs-vercel-deployment-strategies\u002Ffixing-netlify-builds-that-exceed-the-time-limit\u002F","Diagnose Netlify builds cancelled for exceeding the time limit, then cut build time with caching, skipped work and leaner dependency installs.",{"k":24,"html":110},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 278\" role=\"img\" aria-labelledby=\"hub-netlify-topics-title hub-netlify-topics-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-netlify-topics-title\">Topics with the most Netlify guides\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-netlify-topics-desc\">Horizontal bars, largest first: Netlify vs Vercel Deployment Strategies 8, Serverless Functions for Static Sites 2, Technical SEO for Static Sites 1, CDN Caching Rules for SSGs 1, Image Optimization Pipelines in Astro 1 and Incremental Builds and Build Caching for SSGs 1.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"278\" 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=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"99.0\" width=\"91.4\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"133.0\" width=\"45.7\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"167.0\" width=\"45.7\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"201.0\" width=\"45.7\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"235.0\" width=\"45.7\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M350.0 60.0 L350.0 260.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\">Where Netlify comes up\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"79.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Netlify vs Vercel Deployment Strategies\u003C\u002Ftext>\n    \u003Ctext x=\"723.6\" y=\"79.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">8\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"113.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Serverless Functions\u003C\u002Ftext>\n    \u003Ctext x=\"449.4\" y=\"113.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"147.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Technical SEO\u003C\u002Ftext>\n    \u003Ctext x=\"403.7\" y=\"147.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">1\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"181.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">CDN Caching Rules\u003C\u002Ftext>\n    \u003Ctext x=\"403.7\" y=\"181.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">1\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"215.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Image Optimization Pipelines in Astro\u003C\u002Ftext>\n    \u003Ctext x=\"403.7\" y=\"215.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">1\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"249.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Incremental Builds and Build Caching\u003C\u002Ftext>\n    \u003Ctext x=\"403.7\" y=\"249.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">1\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>Topic pages give the wider context for each group; the numbers count only guides that use this tool in depth.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":112,"items":113},"Often used with Netlify",[114,119,124,129,133,137],{"t":115,"u":116,"d":117,"y":118},"Vercel","\u002Ftools\u002Fvercel\u002F","Non-Next.js generators, the Build Output API and caching.","6 shared guides",{"t":120,"u":121,"d":122,"y":123},"Cloudflare","\u002Ftools\u002Fcloudflare\u002F","Pages and Workers hosting, cache rules and edge functions.","5 shared guides",{"t":125,"u":126,"d":127,"y":128},"Astro","\u002Ftools\u002Fastro\u002F","Islands, content collections, astro:assets and deployment.","2 shared guides",{"t":130,"u":131,"d":132,"y":128},"Eleventy","\u002Ftools\u002Feleventy\u002F","Incremental builds, image pipelines and the data cascade.",{"t":134,"u":135,"d":136,"y":128},"Hugo","\u002Ftools\u002Fhugo\u002F","Build time at scale, image caches, modules and multilingual sites.",{"t":138,"u":139,"d":140,"y":141},"Jekyll","\u002Ftools\u002Fjekyll\u002F","Plugins, reproducible builds, upgrades and migration away.","1 shared guides",1790943190467]