{"catalogRevision":"cat_f13ab9a494120b5e","recipeId":"page:migrate:cloudflare-cdn-configuration:origin-cache-refresh","recipeRevision":"r1","canonicalPath":"/migrate/cloudflare-cdn-configuration/origin-cache-refresh","label":"Migrate Cloudflare CDN configuration: Origin cache refresh","family":"Migration guide","summary":"Move CDN delivery from Cloudflare CDN configuration to Ample, one component at a time. Destination verified on Ample: a no-cache object overwritten in the published bucket and the CDN URL serving the new content on the next fetch (refresh=ok before=v1 after=v2), verified by the app fetching its own public URL. Source procedure: Record page rules, cache rules and the asset paths the app references. Not migrated automatically: Cloudflare cache rules, Workers, Transform Rules and tiered caching are not migrated; Ample verifies delivery of published bucket objects only. Cutover: Redeploy the app with the new asset base URL, verify delivery from the CDN URL, then retire the old cache rules. Rollback: keep the source untouched until you confirm; nothing at the source is changed or deleted by this guide.","representativeQueries":["Migrate Cloudflare CDN configuration: Origin cache refresh","Where can I host Origin cache refresh?","I need a component-scoped export/import or reconfiguration procedure for Origin cache refresh, with compatibility checks, verification and rollback."],"breadcrumbIds":["discovery","migration","migration:object-and-cdn-sources","migration:cloudflare-cdn-configuration","page:migrate:cloudflare-cdn-configuration:origin-cache-refresh"],"breadcrumbs":[{"id":"discovery","label":"Agent hosting discovery","canonicalPath":"/discover/discovery","kind":"root"},{"id":"migration","label":"Migration sources by component","canonicalPath":"/discover/migration","kind":"facet"},{"id":"migration:object-and-cdn-sources","label":"Object and CDN sources","canonicalPath":"/discover/migration/object-and-cdn-sources","kind":"group"},{"id":"migration:cloudflare-cdn-configuration","label":"Cloudflare CDN configuration","canonicalPath":"/discover/migration/cloudflare-cdn-configuration","kind":"atom"},{"id":"page:migrate:cloudflare-cdn-configuration:origin-cache-refresh","label":"Migrate Cloudflare CDN configuration: Origin cache refresh","canonicalPath":"/migrate/cloudflare-cdn-configuration/origin-cache-refresh","kind":"recipe"}],"parentIds":["migration:cloudflare-cdn-configuration","pattern:origin-cache-refresh","intent:migrate-cdn"],"parents":[{"id":"migration:cloudflare-cdn-configuration","label":"Cloudflare CDN configuration","canonicalPath":"/discover/migration/cloudflare-cdn-configuration","kind":"atom"},{"id":"pattern:origin-cache-refresh","label":"Origin cache refresh","canonicalPath":"/discover/pattern/origin-cache-refresh","kind":"atom"},{"id":"intent:migrate-cdn","label":"Migrate CDN","canonicalPath":"/discover/intent/migrate-cdn","kind":"atom"}],"resourceRequirements":["primitive:cdn"],"infrastructureRequirements":[{"primitiveId":"primitive:cdn","label":"CDN","canonicalPath":"/discover/primitive/cdn","status":"verified","summary":"The CDN host serves objects from published buckets. It does not front app compute and is not a cache or key-value store."}],"workload":"Origin cache refresh","migrationSource":"Cloudflare CDN configuration","releaseStatus":"published","supportStatus":"verified","executionStatus":"unbound","docsOnly":true,"prerequisites":["Authorized access to the Cloudflare CDN configuration source and its export tooling","An inventory of every component in scope and out of scope","A validated backup or copy before any cutover","An Ample account token with servers:write, buckets:write"],"testedConfiguration":{"template":"node-22","runtime":"node","size":"s-1vcpu-1gb","install":"npm install","build":"npm run build --if-present","start":"npm run start"},"inputSchema":null,"outputSchema":null,"workflowSteps":[{"title":"Inventory the source","body":"List what Cloudflare CDN configuration provides beyond the component you are moving. Out of scope here: Cloudflare cache rules, Workers, Transform Rules and tiered caching are not migrated; Ample verifies delivery of published bucket objects only."},{"title":"Source step 1","body":"Record page rules, cache rules and the asset paths the app references"},{"title":"Source step 2","body":"Copy the public assets into a published Ample bucket under versioned keys with immutable Cache-Control"},{"title":"Source step 3","body":"Update the app to build asset URLs from the Ample public URL"},{"title":"Publish the destination bucket","body":"Create and publish the asset bucket, upload versioned assets with immutable Cache-Control, and point the app at the public URL.","command":"ample bucket publish <bucket-name>"},{"title":"Validate before cutover","body":"Run the app's own checks and, for data, compare counts and checksums; the example checks are the pattern self-tests (/p/origin-cache-refresh)."},{"title":"Cut over","body":"Redeploy the app with the new asset base URL, verify delivery from the CDN URL, then retire the old cache rules."},{"title":"Rollback","body":"Point DNS or configuration back to the source. The source was never modified; deletion is a separate, user-executed step after validation."}],"examples":[{"title":"Next.js pattern fixture (destination)","description":"Verified destination basis: origin cache refresh.","sourceRef":"tests/deploy-canaries/next-js-patterns"}],"successChecks":[{"description":"destination app responds on its public URL","kind":"http_get","path":"/","expect":"ample canary next js patterns"},{"description":"origin-cache-refresh check from the destination example","kind":"http_get","path":"/p/origin-cache-refresh","expect":"see the pattern fixture checks"},{"description":"data or object counts and checksums match the source","kind":"manual","expect":"operator comparison before cutover"}],"limitations":["Documentation only: nothing is executed automatically and no execution binding is offered.","The source-side procedure is documented from Cloudflare CDN configuration's standard tooling and was not executed in this catalog's evidence; the destination side was verified with the pattern fixture.","No full source-product parity is claimed: Cloudflare cache rules, Workers, Transform Rules and tiered caching are not migrated; Ample verifies delivery of published bucket objects only.","Verified on the node-22 template at s-1vcpu-1gb; region, compliance and request-duration limits are unknown.","PutObject and GetObject with path-style addressing are verified; bulk copy tooling and other S3 operations are not."],"costEstimate":{"currency":"USD","monthlyAmount":5.0,"authoritative":true,"basis":"size prices from pricing.toml (loaded by the API) at build revision 752d2a7584688a5d233b2c53d38307d289b04d3e","components":[{"name":"app server","size":"s-1vcpu-1gb","quantity":1.0,"monthlyAmount":5.0}],"note":"Destination always-on monthly price of the tested sizes; apps auto-pause when idle. Source costs are unknown to Ample."},"evidenceSummary":[{"kind":"canary_run","summary":"Destination side verified: the Next.js pattern fixture deployed on Ample (next build then next start -H 0.0.0.0 -p $PORT on the node-22 template) and its checks passed (a no-cache object overwritten in the published bucket and the CDN URL serving the new content on the next fetch (refresh=ok before=v1 after=v2), verified by the app fetching its own public URL). The source-side export from Cloudflare CDN configuration is documented from the vendor's standard tooling and was not executed by this catalog's evidence.","observedAt":"2026-09-21T02:34:39Z","implementationRevision":"1d28ae0 (CLI 0.1.21)","expiresAt":"2027-03-20T02:34:39Z","scope":{"checks":["/p/origin-cache-refresh"],"destinationOnly":true,"template":"node-22"}}],"lastVerifiedAt":"2026-09-21T02:34:39Z","mcpBinding":null,"unknowns":["region availability is unknown until a verified region fact is recorded","compliance attestations are unknown; none are claimed"],"formats":{"html":"https://ample.computer/migrate/cloudflare-cdn-configuration/origin-cache-refresh","markdown":"https://ample.computer/migrate/cloudflare-cdn-configuration/origin-cache-refresh.md","json":"https://api.ample.computer/v1/catalog/recipes/page%3Amigrate%3Acloudflare-cdn-configuration%3Aorigin-cache-refresh"},"nextActions":[{"actionId":"browse-catalog","label":"Browse the catalog index","operationId":"catalog_index","method":"GET","relativePath":"/v1/catalog","origin":"api","parameters":{},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"search-recipes","label":"Search published recipes by intent, stack and constraints","operationId":"search_recipes","method":"POST","relativePath":"/v1/catalog/search","origin":"api","parameters":{"body":{"limit":5,"query":"Migrate Cloudflare CDN configuration: Origin cache refresh"}},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"plan:page:migrate:cloudflare-cdn-configuration:origin-cache-refresh","label":"Prepare a side-effect-free deployment plan for an authorized project","operationId":"plan_deployment","method":"POST","relativePath":"/v1/catalog/plan","origin":"api","parameters":{"body":{"inputs":{},"projectId":"<workspace or server id you own>","recipeId":"page:migrate:cloudflare-cdn-configuration:origin-cache-refresh","recipeRevision":"r1"}},"requiresAuthentication":true,"requiresApproval":false},{"actionId":"auth-setup","label":"Read the existing agent authentication setup","operationId":"existing_auth_setup","method":"GET","relativePath":"/mcp/setup","origin":"api","parameters":{},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"browse:migration:cloudflare-cdn-configuration","label":"Browse Cloudflare CDN configuration","operationId":"browse_node","method":"GET","relativePath":"/v1/catalog/nodes/migration%3Acloudflare-cdn-configuration","origin":"api","parameters":{"nodeId":"migration:cloudflare-cdn-configuration"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"browse:pattern:origin-cache-refresh","label":"Browse Origin cache refresh","operationId":"browse_node","method":"GET","relativePath":"/v1/catalog/nodes/pattern%3Aorigin-cache-refresh","origin":"api","parameters":{"nodeId":"pattern:origin-cache-refresh"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"browse:intent:migrate-cdn","label":"Browse Migrate CDN","operationId":"browse_node","method":"GET","relativePath":"/v1/catalog/nodes/intent%3Amigrate-cdn","origin":"api","parameters":{"nodeId":"intent:migrate-cdn"},"requiresAuthentication":false,"requiresApproval":false}]}