Cloudflare 免费套餐资源概述

充分利用 Cloudflare 免费资源,可以实现高效、低成本的云原生架构部署,无需自建基础设施,即可获得全球加速、安全防护和灵活的边缘计算能力。

免费套餐资源概述

Cloudflare 免费方案为开发者提供了丰富的基础服务,包括 CDN 加速、免费 SSL、DDoS 保护等。在此基础上,开发者还可使用 Workers 平台及其他边缘服务。下表总结了各项免费资源及其额度:

在实际应用中,合理分配和利用这些资源,可以满足大多数中小型项目的需求。

资源类型免费额度说明典型用途
Workers每天 100,000 次请求(每次 10ms CPU),静态资源请求无限制反向代理、API 加速、边缘计算
Workers KV每天 100,000 次读、1,000 次写,单命名空间 1GB配置存储、静态元数据
Pages每项目每月 500 次构建,100 个自定义域名,20,000 文件/站点,单文件≤25MB静态网站托管、内容分发
R2 对象存储每月 10GB 存储,1,000,000 次 Class A、10,000,000 次 Class B 操作,出站免费大型静态资源、图片、视频存储
D1 数据库每天 5,000,000 行读、100,000 行写,5GB 存储轻量 SQL 应用、原型开发
Queues仅付费计划可用消息队列、异步任务
表 1: Cloudflare 免费套餐主要资源与额度

通过 Cloudflare 控制面板或 Wrangler CLI,开发者可便捷地创建和管理上述资源。利用这些免费额度,可以在全球节点部署高可用的边缘应用,无需自建运维。

典型使用场景

在 Cloudflare 免费资源的支持下,开发者可以实现多种高效的应用场景。以下分别介绍常见的典型用法,并配以说明和代码示例。

反向代理与代理

Cloudflare Workers 可作为灵活的请求代理。通过编写 Worker 脚本,可以拦截 HTTP 请求、修改路径或头部,并将请求转发到后端服务器或第三方 API。例如,以下代码实现了简单的反向代理,将请求转发到 https://api.example.com

// 反向代理示例:将请求转发到指定后端 API
addEventListener("fetch", event => {
  event.respondWith(handle(event.request));
});

async function handle(request) {
  let url = new URL(request.url);
  url.hostname = "api.example.com";
  let response = await fetch(url.toString(), request);
  return response;
}

通过这种方式,可以将 Cloudflare 的全球加速和缓存能力应用于任意后端服务。结合 Cache API 或 Workers KV,还可缓存代理结果,进一步减轻源站压力。此外,Workers 支持自定义路由、A/B 测试、请求重写等高级流量控制。

API 加速

Cloudflare 的全球网络和缓存机制可显著提升 API 响应速度。对于可缓存的数据,建议使用 Cache API 将响应缓存在边缘节点。以下示例展示了如何将响应存入 caches.default,并设置 Cache-Control 头:

// API 缓存加速示例
async function handle(request) {
  const cache = caches.default;
  let response = await cache.match(request);
  if (!response) {
    response = await fetch(request);
    response = new Response(response.body, response);
    response.headers.append("Cache-Control", "s-maxage=10");
    ctx.waitUntil(cache.put(request, response.clone()));
  }
  return response;
}

对于频繁访问但不常更新的数据,可将其存入 Workers KV 作为全局缓存。需要注意,Workers KV 写入有延迟,不适合高并发实时写场景。静态资源(如图片、脚本)可挂载到 R2,并通过 Workers 缓存返回,实现免费的全球分发和带宽。

边缘计算

Workers 支持在边缘节点运行 JavaScript/Wasmtime,实现离用户更近的计算。可在请求生命周期的不同阶段执行自定义逻辑,如鉴权、A/B 测试、动态路由、内容调整等。例如,可在边缘节点根据地域选择不同源站,或直接生成响应内容。

边缘计算常见应用包括:

  • 自定义访问控制(如基于 IP 的防护)
  • 动态页面片段生成
  • DDoS 过滤与安全加固
  • 日志收集与异步分析

由于 Workers 与 Cloudflare 网络深度集成,还可灵活控制缓存策略、证书、流量规则等,提升安全性与性能。

静态网站托管

Cloudflare Pages 是专为静态站点设计的免费托管服务,支持无限制的静态请求和带宽。常见流程为:使用 Hugo、Jekyll 等静态站点生成器编译内容,推送到代码仓库,Pages 自动构建并全局发布。

Pages 支持无限项目和分支预览,适合多人协作。单站点最多 20,000 文件,单文件≤25MB。大体积资源可存储于 R2,并通过自定义域名引用。结合 Hugo 等工具,可实现“免费建站”,无需关心服务器和 CDN 配置。

使用技巧与注意事项

合理利用 Cloudflare 免费资源,可以极大提升应用性能和可维护性。以下是实践中常见的优化建议和注意事项:

  • 静态资源直接免费:将可静态化内容(如图片、CSS、JS)缓存为静态资源,充分利用免费带宽。可通过 Workers 或 Pages 托管,避免额外费用。
  • 缓存与 KV 策略:API 缓存时应设置合适的 s-maxage,并用 ctx.waitUntil() 异步缓存响应。Workers KV 适合低频写、全局同步场景,不宜用作高并发实时数据库。
  • 定时任务与触发器:Workers 支持 Cron Triggers(免费),Queues 仅付费可用。可用定时任务实现低频作业,异步任务可结合 Durable Objects 或外部队列。
  • 资源限制:Workers 单次执行默认最大 30 秒(可申请 5 分钟),有内存和子请求数限制。长任务建议拆分或用队列处理。
  • 额度重置:大部分免费额度按日(UTC 零点)重置,Pages 构建额度每月重置。合理安排任务,充分利用配额。
  • 域名与证书:免费套餐支持自定义域名(每项目 100 个),SSL 证书自动管理,无需手动配置。

推荐工具与示例

为便于开发和部署,推荐结合以下开源工具与服务。每种工具均配有简要说明和典型配置示例。

Wrangler

Wrangler 是 Cloudflare 官方 CLI 工具,用于构建和部署 Workers 应用。支持项目初始化、绑定管理、本地调试等。

示例配置(wrangler.toml):

name = "my-worker"
type = "javascript"
account_id = "YOUR_ACCOUNT_ID"
route = "/*"
zone_id = "YOUR_ZONE_ID"

Hugo

Hugo 是高性能静态站点生成器,Cloudflare Pages 支持一键部署。典型配置(config.toml)如下:

baseURL = "https://yourdomain.com/"
title = "我的 Hugo 站点"
languageCode = "zh-cn"
theme = "ananke"
[Params]
  author = "作者名"

将生成的 public/ 文件夹推送到 GitHub,关联 Pages 后自动部署。

GitHub Actions

GitHub Actions 可实现自动化 CI/CD。以下为使用 Wrangler 部署 Workers 的工作流示例(.github/workflows/deploy.yml):

name: Deploy Worker
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Publish to Cloudflare Workers
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}

需在仓库 Secrets 配置 CLOUDFLARE_API_TOKEN。Pages 部署可用 cloudflare/pages-action

OpenResty

OpenResty 基于 Nginx,支持 Lua 脚本扩展。可用于本地开发代理或自建 CDN 前端。示例配置(nginx.conf):

worker_processes 1;
events { worker_connections 1024; }
http {
  lua_shared_dict my_cache 10m;
  server {
    listen 8080;
    location / {
      access_by_lua_block {
        local uri = ngx.var.request_uri
        if uri == "/" then
          ngx.req.set_uri("/index.html")
        end
      }
      root /usr/share/nginx/html;
    }
  }
}

适合本地开发或与 Cloudflare 边缘部署结合使用。

Bun

Bun 是新兴的 JavaScript 运行时和工具链,兼容 Node.js 生态。可用于本地开发加速依赖安装和构建。示例用法:

bun init
bun install express
bun run dev

Bun 目前不直接支持 Workers 运行时,但可作为本地构建工具与 Wrangler 配合使用。

总结

Cloudflare 免费套餐为开发者提供了丰富的边缘计算与托管资源。通过合理利用 Workers、KV、Pages、R2、D1 等服务,可以实现高效、低成本的 Web 应用部署。结合 Wrangler、Hugo、GitHub Actions 等工具,开发与运维流程更加自动化和现代化。建议根据实际需求,灵活组合各项资源,充分发挥 Cloudflare 的全球网络优势,打造安全、可扩展的云原生架构。

参考文献

文章导航

章节内容

这是章节的内容页面。

章节概览

评论区