
Current guides
Read article9 Practical Ways to Improve Page Speed in 2026
Nine practical ways to improve page speed in 2026, from image delivery and JavaScript reduction to caching, fonts, and static-first rendering.

A practical 2026 look at Cloudflare Pages, Workers, R2, D1, KV, Queues, Turnstile, email, pricing, and where Cloudflare is and is not the right choice.
Cloudflare is one of those platforms that looks almost suspiciously good when you first meet it. Cheap CDN, DNS, edge functions, WAF, static hosting, image tooling, storage, queues, and now email. For a personal site or small product, that stack can remove a lot of operational drag.
It is also not magic. Some parts are brilliantly lightweight. Some parts still feel like platform primitives you need to shape carefully yourself. This is what I would actually use Cloudflare for in 2026, where it is strong, and where I would deliberately look elsewhere.
Pages:
excellent for static sites, previews, and lightweight full-stack delivery. Watch out for trying to turn it into a heavy server platform.
Workers and Pages Functions:
strong for edge APIs, middleware, and small services. Watch out for runtime differences from traditional Node backends.
KV:
great for cached lookups and lightweight state. Watch out for eventual consistency.
D1:
useful for smaller relational workloads on the same platform. Watch out for pretending every production database problem is now a SQLite problem.
R2:
strong for object storage and generated assets. Watch out for the surrounding lifecycle, processing, and permission work.
Queues:
useful for background jobs and async processing. Watch out for retries, deduplication, and failure visibility.
Turnstile:
good low-friction bot protection. Watch out for treating it as your only abuse control.
Email Routing and sending:
practical for lightweight inbound and transactional workflows. Watch out for outbound verification and quota constraints.
For publishing sites, Cloudflare is easy to like. Pages is fast, previews are simple, and the platform wants you to keep things static until there is a good reason not to. That matches how I prefer to build content sites anyway. My own blog is a good example: static pages first, small server-side additions where they earn their keep, and edge delivery doing the boring part well.
The same pattern works nicely for small app surfaces. Workers and Pages Functions are good when you want a small API, auth-adjacent middleware, webhooks, caching layers, form handling, or request-level logic without spinning up a full server estate.
Pages is still the easiest win. Cloudflare describes Pages as a way to create full-stack applications that are instantly deployed to the global network, and Pages Functions as server-side code for dynamic functionality without a dedicated server. That is exactly the sweet spot: static delivery with selective server-side logic, not a giant monolith hidden behind marketing language.
Workers is the broader runtime. I like it for APIs, scheduled jobs, content transforms, proxy endpoints, and small product features where fast cold starts and edge placement actually matter. I like it less when a team expects a conventional long-running Node service with every familiar library and debugging pattern.
KV is useful for cached lookups, feature flags, search manifests, rate-limit support data, and “read often, write carefully” state. I would not treat it as a transactional source of truth.
D1 is appealing because it keeps simple relational work on the same platform. For small products, admin tools, and internal workflows, that can be enough. I would still be cautious about pretending every production app problem is now a SQLite-at-the-edge problem. If the write profile, relational complexity, or reporting needs are serious, I would still consider a more conventional Postgres setup.
R2 is one of Cloudflare’s clearest wins. File storage without the usual egress anxiety is a strong offer, especially for user uploads, generated assets, backups, and media that needs to be served through the rest of the Cloudflare stack.
Queues make Cloudflare much more usable for “real app” jobs: email sends, indexing, image processing, retries, event fan-out, and anything you do not want directly on the request path. The caveat is architectural, not product-marketing: once you add background work, you need good retry behaviour, deduping, visibility, and failure handling.
Cloudflare’s WAF, rate limiting, bot controls, and cache tooling are a big reason I keep using it. Even on small projects, there is value in having sane defaults around TLS, redirects, abuse mitigation, and caching without bolting together separate vendors.
Turnstile is especially good for forms and public endpoints because it is less annoying than old-school CAPTCHAs. I use it when I want to raise the cost of spam without punishing legitimate users.
On the performance side, cache rules, image optimisation, and the global edge are all useful, but only if the underlying site is already disciplined. Cloudflare will help a good site more than it will rescue a bloated one. If your JavaScript bundle is huge, your fonts are poorly loaded, and your layout shifts all over the place, you still need the work discussed in my PageSpeed Insights guide and my page speed checklist.
Email Routing is the mature, easy part: route incoming mail to another address or into Workers logic. For a contact form, support inbox, or lightweight automation, that is very practical.
Email Sending is more nuanced. Cloudflare now offers outbound transactional email, but it is still a product area where I would read the limits and verification rules before promising anything ambitious. In practice, it is a strong fit for app emails, confirmations, and notifications. I would not assume it replaces a specialised email platform for every high-volume or marketing-heavy workload.
Cloudflare’s free tier is still unusually generous for personal sites and prototypes. That matters. A lot of developers do not need a platform that can theoretically scale to millions; they need a platform that makes a side project cheap enough to keep alive.
The risk is the usual one: once you combine enough products, you can still end up with platform-specific assumptions everywhere. Cheap entry is great. Quiet lock-in is less great.
This is one of the few places where I think Cloudflare enthusiasts are sometimes too polite. Local development is decent, but it is not the same as debugging a plain Node server and Postgres app on your machine. Durable local parity across bindings, queues, edge behaviour, and platform-specific limits still takes care.
If your team is happiest with conventional backend tooling, cloud databases they already know, and familiar observability stacks, Cloudflare can feel “clever” faster than it feels calm.
Cloudflare has improved here, but observability is still one of the main trade-offs I weigh. For a blog or indie app, the current tooling is usually enough. For a serious production system with multiple engineers, incident expectations, and deep debugging needs, I want to evaluate logging, tracing, and operational visibility early, not after launch.
Lock-in is real too. Workers code, bindings, KV usage, D1 assumptions, queue wiring, and platform APIs all add up. That does not make Cloudflare a bad choice. It means you should treat it as a strategic choice, not a reversible convenience.
Yes. Strong recommendation. Pages, cache control, image delivery, redirects, and a small amount of server logic are an excellent fit. My site migration write-up and CMS comparison both connect back to this.
Often yes, especially if you want a fast public web surface, edge APIs, uploads, queues, and a low-ops footprint. I would choose it when simplicity matters more than cloud-provider neutrality.
Maybe. I would absolutely consider Cloudflare, but I would make the call feature by feature. It can be a great edge and delivery layer even when your core data platform lives elsewhere.
Probably not as the only platform. Cloudflare is best when you want focused primitives, fast delivery, and less infrastructure ceremony. If your team expects the full shape of AWS or GCP, they may spend more time adapting than benefiting.
I would think twice if the project needs deep relational reporting, heavy internal-platform customisation, conventional backend assumptions, or enterprise-grade observability from day one. I would also think twice if the team does not want to learn Cloudflare’s runtime model and limits properly.
Cloudflare is one of the best platforms I know for static publishing, edge delivery, lightweight APIs, and low-friction public web projects. It is not automatically the best home for every application tier. Used deliberately, it can remove a lot of operational weight. Used uncritically, it can turn into a platform-shaped compromise you keep defending because the first deploy was easy.
A small, privacy-first analytics choice.
This site uses lightweight analytics to understand which notes and pages are useful. Accepting enables PostHog analytics. Declining keeps analytics off.