[{"data":1,"prerenderedAt":181},["ShallowReactive",2],{"hub:tools-cloudflare":3},{"path":4,"key":5,"title":6,"h1":7,"description":8,"crumbs":9,"blocks":17},"\u002Ftools\u002Fcloudflare\u002F","tools-cloudflare","Cloudflare for Static Sites: Pages, Workers, Cache","Cloudflare","Guides for static sites on Cloudflare: Pages and Workers assets, headers and redirects, tiered cache, Early Hints and edge functions.",[10,13,16],[11,12],"Home","\u002F",[14,15],"Tools","\u002Ftools\u002F",[7,4],[18,21,23,26,39,41,82,149,151],{"k":19,"text":20},"p","Cloudflare shows up across every section of the site because it is several products at once for a static site: a host (Pages and Workers static assets), a CDN in front of other hosts, and an edge runtime for the handful of dynamic routes a static site needs. The guides below cover all three — deploying Astro and Hugo, headers and redirects, cache keys and tiered caching, Early Hints, middleware, rate limiting, and keeping previews private with Access.",{"k":19,"text":22},"Where a guide compares Cloudflare with another platform, the comparison is measured on the same build; where it describes a platform limit, the limit is stated with the date it was checked, because Cloudflare’s static offering has changed more than any other host’s in the last two years.",{"k":24,"html":25},"fig","\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 300\" role=\"img\" aria-labelledby=\"hub-cloudflare-hero-title hub-cloudflare-hero-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-cloudflare-hero-title\">Cloudflare as host, CDN and edge runtime\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-cloudflare-hero-desc\">Three layers. As a host, Pages and Workers static assets serve the build output. As a CDN, it caches responses from another origin with cache rules and tiered cache. As an edge runtime, Workers handle forms, redirects, language detection and rate limits.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"300\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"40.0\" y=\"60.0\" width=\"440.0\" height=\"57.2\" rx=\"8\" fill=\"#1982c4\" opacity=\"0.14\" stroke=\"#1982c4\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M260.0 119.2 L260.0 139.2\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-cloudflare-hero-arrow)\"\u002F>\n    \u003Crect x=\"40.0\" y=\"143.2\" width=\"440.0\" height=\"57.2\" rx=\"8\" fill=\"#8ac926\" opacity=\"0.2\" stroke=\"#5a8a16\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M260.0 202.4 L260.0 222.4\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-cloudflare-hero-arrow)\"\u002F>\n    \u003Crect x=\"40.0\" y=\"226.4\" width=\"440.0\" height=\"57.2\" rx=\"8\" fill=\"#6a4c93\" opacity=\"0.14\" stroke=\"#6a4c93\" 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\">Three roles Cloudflare plays for a static site\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"86.4\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Host\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"103.3\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">Pages, Workers static assets\u003C\u002Ftext>\n    \u003Ctext x=\"504.0\" y=\"92.6\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:start\">serve the build\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"169.5\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">CDN\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"186.4\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">cache rules, tiered cache, Early Hints\u003C\u002Ftext>\n    \u003Ctext x=\"504.0\" y=\"175.8\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:start\">in front of any origin\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"252.7\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Edge runtime\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"269.6\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">Workers, middleware, rate limits\u003C\u002Ftext>\n    \u003Ctext x=\"504.0\" y=\"259.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:start\">the few dynamic routes\u003C\u002Ftext>\n  \u003C\u002Fg>\n  \u003Cdefs>\n    \u003Cmarker id=\"hub-cloudflare-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>Many sites use all three at once; the guides below are grouped by which role they concern.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":28,"items":29},"group","Choosing the Right Static Site Generator for Production",[30,35],{"t":31,"u":32,"d":33,"y":34},"Language Detection and Redirects at the Edge","\u002Fchoosing-the-right-static-site-generator-for-production\u002Finternationalization-for-static-sites\u002Flanguage-detection-and-redirects-at-the-edge\u002F","Redirect first-time visitors to their language with a Cloudflare Worker on the root URL only, honour a saved choice and keep crawlers and shared links intact.","How-to",{"t":36,"u":37,"d":38,"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.",{"k":24,"html":40},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 295\" role=\"img\" aria-labelledby=\"hub-cloudflare-kinds-title hub-cloudflare-kinds-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-cloudflare-kinds-title\">Number of Cloudflare guides of each kind\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-cloudflare-kinds-desc\">Vertical bars: How-tos 22, 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=\"230.5\" width=\"90.0\" height=\"15.5\" rx=\"3\" fill=\"#ff595e\" opacity=\"0.3\" stroke=\"#d83b41\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"420.0\" y=\"222.8\" width=\"90.0\" height=\"23.2\" 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\">Cloudflare 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\">22\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=\"223.5\" 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=\"215.8\" 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>27 guides use Cloudflare in depth; each is listed below under the section it belongs to.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":42,"items":43},"Core Web Vitals Optimization for SSGs",[44,49,53,57,61,65,69,73,77],{"t":45,"u":46,"d":47,"y":48},"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.","Comparison",{"t":50,"u":51,"d":52,"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":54,"u":55,"d":56,"y":34},"Cache Keys and Query Strings on CDNs","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fcdn-caching-rules-for-ssgs\u002Fcache-keys-and-query-strings-on-cdns\u002F","Stop tracking parameters from fragmenting a static site’s CDN cache: normalize query strings in the cache key on Cloudflare and CloudFront, and measure hit ratio.",{"t":58,"u":59,"d":60,"y":34},"Cache-Control Headers on Cloudflare Pages","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fcdn-caching-rules-for-ssgs\u002Fsetting-cache-control-headers-on-cloudflare-pages\u002F","Set Cache-Control on Cloudflare Pages with a _headers file and Cache Rules — year-long immutable assets, revalidated HTML, and CF-Cache-Status HIT verified with curl.",{"t":62,"u":63,"d":64,"y":34},"Early Hints (103) on Cloudflare","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fresource-hints-and-navigation-speed\u002Fearly-hints-103-on-cloudflare\u002F","Send 103 Early Hints from Cloudflare for a static site so browsers start fetching CSS, fonts and the LCP image before the HTML arrives, and measure when it helps.",{"t":66,"u":67,"d":68,"y":34},"Precompressing Assets with Brotli and Zstd","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fcss-and-javascript-asset-optimization\u002Fprecompressing-assets-with-brotli-and-zstd\u002F","Precompress static site output at build time with brotli 11 and zstd 19, serve the variants from Caddy, nginx or Cloudflare, and measure the transfer saving.",{"t":70,"u":71,"d":72,"y":34},"Serving Astro Images Through Cloudflare Image Resizing","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fimage-optimization-pipelines-in-astro\u002Fserving-astro-images-through-cloudflare-image-resizing\u002F","Move Astro image processing from build time to Cloudflare Images transformations with a custom image service, cutting build time while keeping srcset and AVIF.",{"t":74,"u":75,"d":76,"y":34},"Tiered Caching and Origin Shield","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fcdn-caching-rules-for-ssgs\u002Ftiered-caching-and-origin-shield\u002F","Use Cloudflare Tiered Cache or CloudFront Origin Shield so edge misses on a static site are served from a regional tier instead of the origin, with measured results.",{"t":78,"u":79,"d":80,"y":81},"Fixing Stale HTML After Deploys on Cloudflare","\u002Fperformance-optimization-core-web-vitals-for-ssgs\u002Fcdn-caching-rules-for-ssgs\u002Ffixing-stale-html-after-deploys-on-cloudflare\u002F","Find why readers see old pages after a deploy on Cloudflare, from Cache Everything rules and browser max-age to service workers, and fix each with a test.","Fix",{"k":27,"h":83,"items":84},"Production-Ready Deployment & CI\u002FCD for SSGs",[85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145],{"t":86,"u":87,"d":88,"y":48},"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.",{"t":90,"u":91,"d":92,"y":48},"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":94,"u":95,"d":96,"y":34},"Adding a Contact Form with Cloudflare Workers","\u002Fproduction-ready-deployment-cicd-workflows\u002Fserverless-functions-for-static-sites\u002Fadding-a-contact-form-with-cloudflare-workers\u002F","Build a contact form for a static site on Cloudflare: a Pages Function that validates, checks Turnstile, rate-limits, stores in D1 and emails the team.",{"t":98,"u":99,"d":100,"y":34},"Automating Eleventy Deployments on Cloudflare Pages","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcloudflare-pages-edge-caching-setup\u002Fautomating-eleventy-deployments-with-cloudflare-pages\u002F","Deploy Eleventy from Git on Cloudflare Pages: connect the repo, set the build command and _site output, pin Node, wire env vars, and ship cache headers — with build times.",{"t":102,"u":103,"d":104,"y":34},"Branch Deploy Controls on Cloudflare Pages","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcloudflare-pages-edge-caching-setup\u002Fbranch-deploy-controls-on-cloudflare-pages\u002F","Control which branches build and deploy on Cloudflare Pages, name preview aliases, skip builds for docs-only changes and keep preview traffic private and cheap.",{"t":106,"u":107,"d":108,"y":34},"Cloudflare Pages Functions Middleware","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcloudflare-pages-edge-caching-setup\u002Fcloudflare-pages-functions-middleware\u002F","Use _middleware.js in Cloudflare Pages Functions to add headers, auth, redirects and A\u002FB routing to a static site, scoped by path and measured for latency and cost.",{"t":110,"u":111,"d":112,"y":34},"Configuring Redirects on Cloudflare Pages","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcloudflare-pages-edge-caching-setup\u002Fconfiguring-redirects-on-cloudflare-pages\u002F","Write a _redirects file for Cloudflare Pages, know its limits, and move large or dynamic rule sets to Bulk Redirects or a Worker without slowing requests.",{"t":114,"u":115,"d":116,"y":34},"Custom Domains and TLS on Cloudflare Pages","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcloudflare-pages-edge-caching-setup\u002Fcustom-domains-and-tls-on-cloudflare-pages\u002F","Attach apex and www domains to Cloudflare Pages, understand how certificates are issued, choose the right SSL mode, and fix the common validation failures.",{"t":118,"u":119,"d":120,"y":34},"Deploying Astro to Cloudflare Workers Static Assets","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcloudflare-pages-edge-caching-setup\u002Fdeploying-astro-to-cloudflare-workers-static-assets\u002F","Deploy a static Astro site to Cloudflare Workers with static assets: wrangler config, trailing slashes, 404 handling, headers, previews and optional server routes.",{"t":122,"u":123,"d":124,"y":34},"Deploying Hugo to Cloudflare Pages and Workers","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcloudflare-pages-edge-caching-setup\u002Fdeploying-hugo-to-cloudflare-pages-and-workers\u002F","Deploy a Hugo site to Cloudflare Pages — pin HUGO_VERSION, set the build command and public output dir — and learn when Workers and Wrangler earn their place.",{"t":126,"u":127,"d":128,"y":34},"Deploying to Cloudflare From GitHub Actions With Wrangler","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcloudflare-pages-edge-caching-setup\u002Fdeploying-to-cloudflare-from-github-actions-with-wrangler\u002F","Deploy a static site to Cloudflare Workers Static Assets or Pages from GitHub Actions with Wrangler: scoped tokens, PR previews, caching and rollback.",{"t":130,"u":131,"d":132,"y":34},"Migrating from Cloudflare Pages to Workers Static Assets","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcloudflare-pages-edge-caching-setup\u002Fmigrating-from-cloudflare-pages-to-workers-static-assets\u002F","Move a static site from Cloudflare Pages to Workers static assets: wrangler config, _headers and _redirects, previews and a zero-downtime domain cutover.",{"t":134,"u":135,"d":136,"y":34},"Password-Protecting Preview Deployments","\u002Fproduction-ready-deployment-cicd-workflows\u002Fpreview-environments-for-pull-requests\u002Fpassword-protecting-preview-deployments\u002F","Keep pull request previews private with platform protection, Cloudflare Access or a small edge function, and keep them out of search indexes with noindex.",{"t":138,"u":139,"d":140,"y":34},"Protecting a Static Site Behind Authentication","\u002Fproduction-ready-deployment-cicd-workflows\u002Fserverless-functions-for-static-sites\u002Fprotecting-a-static-site-behind-authentication\u002F","Gate a static site or one section of it behind single sign-on with Cloudflare Access or an edge JWT check, without leaking pages through caches or search.",{"t":142,"u":143,"d":144,"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":146,"u":147,"d":148,"y":81},"Fixing Redirect Loops on Cloudflare Pages","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcloudflare-pages-edge-caching-setup\u002Ffixing-redirect-loops-on-cloudflare-pages\u002F","Diagnose too many redirects on Cloudflare Pages, from SSL mode and trailing-slash rules to _redirects patterns and Page Rules, and fix each with a curl trace.",{"k":24,"html":150},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 278\" role=\"img\" aria-labelledby=\"hub-cloudflare-topics-title hub-cloudflare-topics-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-cloudflare-topics-title\">Topics with the most Cloudflare guides\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-cloudflare-topics-desc\">Horizontal bars, largest first: Cloudflare Pages Edge Caching Setup 10, CDN Caching Rules for SSGs 5, Serverless Functions for Static Sites 3, Image Optimization Pipelines in Astro 2, Internationalization for Static Sites 1 and Technical SEO for Static Sites 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=\"357.2\" 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=\"178.6\" 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=\"107.2\" 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=\"71.4\" 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=\"35.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=\"35.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 Cloudflare comes up\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"79.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Cloudflare Pages Edge Caching Setup\u003C\u002Ftext>\n    \u003Ctext x=\"715.2\" y=\"79.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">10\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"113.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">CDN Caching Rules\u003C\u002Ftext>\n    \u003Ctext x=\"536.6\" y=\"113.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">5\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"147.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Serverless Functions\u003C\u002Ftext>\n    \u003Ctext x=\"465.2\" 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\">Image Optimization Pipelines in Astro\u003C\u002Ftext>\n    \u003Ctext x=\"429.4\" 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\">Internationalization\u003C\u002Ftext>\n    \u003Ctext x=\"393.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\">Technical SEO\u003C\u002Ftext>\n    \u003Ctext x=\"393.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":152,"items":153},"Often used with Cloudflare",[154,159,164,169,173,177],{"t":155,"u":156,"d":157,"y":158},"Netlify","\u002Ftools\u002Fnetlify\u002F","Headers, redirects, deploy previews and build caching.","5 shared guides",{"t":160,"u":161,"d":162,"y":163},"AWS (S3 and CloudFront)","\u002Ftools\u002Faws\u002F","S3 and CloudFront: clean URLs, cache policies and deploys.","4 shared guides",{"t":165,"u":166,"d":167,"y":168},"Vercel","\u002Ftools\u002Fvercel\u002F","Non-Next.js generators, the Build Output API and caching.","2 shared guides",{"t":170,"u":171,"d":172,"y":168},"Eleventy","\u002Ftools\u002Feleventy\u002F","Incremental builds, image pipelines and the data cascade.",{"t":174,"u":175,"d":176,"y":168},"Astro","\u002Ftools\u002Fastro\u002F","Islands, content collections, astro:assets and deployment.",{"t":178,"u":179,"d":180,"y":168},"GitHub Actions","\u002Ftools\u002Fgithub-actions\u002F","Caching, matrix builds, reusable workflows and pinning.",1790943190467]