Tận dụng tối đa Cloudflare free tier: startup và side project cần biết để tiết kiệm chi phí infrastructure

Cloudflare free tier năm 2026 đủ để chạy một web app hoàn chỉnh - frontend, backend, database, storage, bảo mật, CDN - với chi phí gần bằng $0. Bài này map toàn bộ free tier, giới hạn cần biết, và chiến lược tối ưu để không vô tình vượt quota rồi nhận hóa đơn bất ngờ. ---

Vấn đề

Câu hỏi chúng tôi nghe thường xuyên: "Cloudflare free plan có đủ dùng không, hay sẽ tự nhiên bị charge khi traffic tăng?"

Câu trả lời: phụ thuộc vào bạn dùng tính năng nào và cấu hình thế nào. Một số thứ Cloudflare không charge kể cả traffic cực lớn (CDN bandwidth, DDoS protection). Một số thứ có quota cụ thể (Workers, D1 rows). Biết rõ giới hạn từng thứ - và cách tối ưu để không vượt - là kỹ năng thực sự tiết kiệm tiền cho project.


Bản đồ đầy đủ free tier (tháng 4/2026)

Nhóm 1: Không giới hạn - dùng thoải mái

Đây là những thứ Cloudflare không charge dù traffic cao đến đâu, miễn proxy được bật:

Tính năng Giới hạn free
DNS Unlimited queries
CDN / Bandwidth Unlimited - không charge egress
DDoS Protection Unlimited, tự động
SSL/TLS Unlimited, auto-renew
Cloudflare Tunnel Unlimited traffic
R2 Egress Unlimited - đây là điểm khác biệt lớn với S3
Pages Bandwidth Unlimited
Pages Sites Unlimited
Pages Custom Domains Unlimited

Lưu ý quan trọng: "Unlimited bandwidth" của CDN có điều kiện ngầm - Cloudflare áp dụng cho website hosting thông thường. Nếu dùng CDN để distribute file không phải HTML (ví dụ: làm CDN thuần cho video streaming), có thể vi phạm ToS.


Nhóm 2: Có quota - cần theo dõi

Tính năng Free quota Tính thêm khi vượt
Workers 100,000 req/ngày $0.50/triệu req
Workers CPU 10ms/request -
KV reads 100,000/ngày $0.50/triệu
KV writes 1,000/ngày $5/triệu
KV storage 1 GB $0.50/GB/tháng
D1 reads 25M rows/ngày $0.001/triệu rows
D1 writes 100K rows/ngày $1/triệu rows
D1 storage 5 GB total $0.75/GB/tháng
R2 storage 10 GB/tháng $0.015/GB/tháng
R2 Class A ops (PUT/DELETE) 1M/tháng $4.50/triệu
R2 Class B ops (GET) 10M/tháng $0.36/triệu
Pages Builds 500/tháng - (giới hạn cứng)
WAF Custom Rules 5 rules Cần nâng plan
Rate Limiting Rules 1 rule Cần nâng plan
Zero Trust Users 50 users $7/user/tháng

Nhóm 3: Không có trên free - cần trả phí

Tính năng Plan tối thiểu
WAF Attack Score (ML) Business ($200/tháng)
Bot Management (nâng cao) Enterprise
Argo Smart Routing $5/tháng (add-on)
Image Resizing Pro ($20/tháng)
HTTP/2 Prioritization Enterprise
Custom Nameservers Business
Log Retention > 24h Pro

Chiến lược tối ưu từng thứ

Workers: tối ưu để không vượt 100k req/ngày

100,000 requests/ngày nghe nhiều, nhưng nếu mỗi page load gọi 10 Worker requests thì chỉ còn 10,000 page views/ngày - không nhiều.

Tối ưu 1: Cache response trong Worker

export default {
  async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
    const cache = caches.default;
    const cacheKey = new Request(request.url, request);

    // Kiểm tra cache trước
    let response = await cache.match(cacheKey);
    if (response) return response;

    // Fetch từ origin
    response = await fetch(request);

    // Cache 5 phút cho GET requests
    if (request.method === "GET" && response.status === 200) {
      const cachedResponse = new Response(response.body, response);
      cachedResponse.headers.set("Cache-Control", "public, max-age=300");
      ctx.waitUntil(cache.put(cacheKey, cachedResponse.clone()));
      return cachedResponse;
    }

    return response;
  },
};

Response được cache ở Cloudflare edge - request tiếp theo không hit Worker, không tốn quota.

Tối ưu 2: Dùng Cloudflare Cache thay Worker cho static logic

Nếu Worker chỉ đang thêm header hoặc redirect, cân nhắc dùng Transform Rules hoặc Cache Rules thay thế - không tốn Worker invocation.

Tối ưu 3: Monitor Workers Analytics

Vào Workers → Analytics để xem invocation count, error rate, CPU time. Set alert nếu gần đến 100k/ngày.


R2: tối ưu Class A operations (PUT/DELETE)

Class A ops (write) đắt hơn Class B (read) nhiều. 1M Class A ops/tháng = ~33,000 writes/ngày.

Tối ưu: batch delete, tránh write thừa

// BAD: delete từng file
for (const key of filesToDelete) {
  await env.BUCKET.delete(key);  // mỗi cái = 1 Class A op
}

// GOOD: delete batch (1 API call)
await env.BUCKET.delete(filesToDelete);  // = 1 Class A op cho cả batch

Tối ưu: không ghi lại file không đổi

// Kiểm tra ETag trước khi write
const existing = await env.BUCKET.head(key);
const newEtag = computeHash(content);

if (existing?.etag !== newEtag) {
  await env.BUCKET.put(key, content);  // chỉ write khi thực sự thay đổi
}

D1: tối ưu row reads

25M row reads/ngày nghe lớn, nhưng một query SELECT * trên bảng 10,000 rows = 10,000 reads. Query không tối ưu sẽ ăn quota nhanh.

Tối ưu 1: SELECT cột cụ thể, không SELECT *

-- BAD: đọc tất cả cột dù chỉ cần 2
SELECT * FROM products WHERE category = 'electronics'

-- GOOD: chỉ đọc những gì cần
SELECT id, name, price FROM products WHERE category = 'electronics'

Tối ưu 2: Pagination nghiêm túc

// Luôn LIMIT query, không bao giờ fetch toàn bộ bảng
const { results } = await env.DB.prepare(
  "SELECT id, name FROM articles ORDER BY created_at DESC LIMIT ? OFFSET ?"
).bind(pageSize, offset).all();

Tối ưu 3: Cache D1 results trong KV

Kết quả query ít thay đổi (config, categories, tags) → cache trong KV, tránh D1 reads:

async function getCachedCategories(env: Env) {
  // Thử KV cache trước
  const cached = await env.KV.get("cache:categories", "json");
  if (cached) return cached;

  // Fallback D1
  const { results } = await env.DB.prepare("SELECT * FROM categories").all();
  
  // Cache 1 giờ trong KV
  await env.KV.put("cache:categories", JSON.stringify(results), {
    expirationTtl: 3600,
  });

  return results;
}

Pages: tối ưu build quota (500/tháng)

500 builds/tháng = ~16 builds/ngày. Với team đông, merge nhiều PR có thể hết nhanh.

Tối ưu 1: Dùng branch deploy rules

Vào Pages → Settings → Branch control: chỉ trigger build cho mainstaging, không build mọi branch feature.

Tối ưu 2: Skip build với commit message

Thêm [skip ci] hoặc [cf-pages skip] vào commit message để Cloudflare bỏ qua build cho commit đó - hữu ích cho commit docs, README, config nhỏ.

Tối ưu 3: Cache dependencies

Pages tự động cache node_modules dựa trên package-lock.json. Đảm bảo commit package-lock.json để build sau không reinstall từ đầu.


Zero Trust: tối ưu 50 user limit

50 users free là đủ cho team startup. Nhưng "user" trong Zero Trust được tính thế nào?

  • Chỉ tính user đã login qua Access ít nhất một lần trong 30 ngày
  • User inactive > 30 ngày không tính vào quota
  • Service Token (cho CI/CD) không tính vào 50 users

Tối ưu: audit users định kỳ

Zero Trust → Settings → Account → Users
→ Xem danh sách active users
→ Revoke users không còn trong team

Stack miễn phí cho side project hoàn chỉnh

Đây là cách chúng tôi hay setup side project tận dụng tối đa free tier:

Frontend:   Cloudflare Pages (unlimited bandwidth, deploy từ Git)
Backend:    Cloudflare Workers + Hono (100k req/ngày free)
Database:   D1 SQLite (5GB, 25M reads/ngày)
Storage:    R2 (10GB, egress miễn phí)
Cache:      KV (1GB, 100k reads/ngày)
Security:   WAF + DDoS protection (free, tự động)
Access:     Zero Trust Access (bảo vệ admin panel, tối đa 50 users)
DNS:        Cloudflare DNS (unlimited)
SSL:        Auto, free

Chi phí hàng tháng cho traffic thông thường: $0.


Khi nào nên nâng lên paid plan?

Dấu hiệu Nên xem xét
Workers > 100k req/ngày liên tục Workers Paid ($5/tháng)
Cần > 5 WAF Custom Rules Pro ($20/tháng)
Team > 50 người dùng Access Zero Trust Standard ($7/user)
R2 > 10GB Tính thêm $0.015/GB - thường rẻ hơn S3
Pages > 500 builds/tháng Pro ($20/tháng)

Workers Paid plan ($5/tháng) mở khóa 10 triệu requests/tháng + CPU time 30s - đây thường là bước upgrade đầu tiên hợp lý khi project grow.


Checklist tận dụng free tier

☐ Bật Proxy (cam) cho DNS records quan trọng → bật CDN, DDoS, SSL tự động
☐ Cấu hình Cache Rules cho static assets → giảm origin hits, tiết kiệm server
☐ Workers: cache response trong Worker hoặc dùng Cloudflare Cache thay thế
☐ D1: SELECT cột cụ thể, luôn LIMIT, cache results trong KV khi hợp lý
☐ R2: batch delete/write, kiểm tra ETag trước khi ghi lại
☐ Pages: chỉ build main/staging, dùng [cf-pages skip] cho commit nhỏ
☐ Zero Trust: audit active users mỗi tháng, revoke users cũ
☐ Monitor Workers Analytics hàng tuần để không bị surprise

Kết

Cloudflare free tier năm 2026 là một trong những free tier hào phóng nhất trong thế giới developer tools. Hiểu rõ giới hạn của từng thứ và cách tối ưu - đặc biệt Workers invocations, D1 row reads, và R2 Class A operations - bạn có thể chạy một web app production-grade với chi phí gần bằng $0 trong giai đoạn early stage.

Khi project grow và vượt free tier, pricing của Cloudflare vẫn competitive so với AWS/GCP/Azure - đặc biệt nhờ không có egress fee.


Tham khảo


BKGlobal Tech Team

Blog Công nghệ

Xem tất cả