用 Cloudflare Workers + KV 免费搭一个自己的短链服务

第三方短链服务都有个共同风险:站哪天没了,链接全失效;有的还塞广告、跳推广页。短链这种东西,攥在自己手里最稳。

Cloudflare Workers 免费套餐每天 10 万次请求,KV 免费 10 万次读/天——跑个人短链绰绰有余,而且不用服务器、不用备案。

它是怎么工作的

短链请求的处理流程

访问 你的域名/abc → Worker 拦截 → 去 KV 里查 abc 对应的长链接 → 命中就 302 跳过去,没命中返回 404。

操作步骤速览

短链服务搭建步骤

一、建 KV 命名空间

步骤 1:建 KV 命名空间

npm install -g wrangler
wrangler login
wrangler kv namespace create LINKS

记下输出里的 id

二、Worker 代码

步骤 2:编写 Worker 脚本

新建 src/index.js

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const key = url.pathname.slice(1);
    if (!key) {
      return new Response("shortlink service is running", { status: 200 });
    }
    const target = await env.LINKS.get(key);
    if (!target) {
      return new Response("404 Not Found", { status: 404 });
    }
    return Response.redirect(target, 302);
  },
};

三、wrangler.toml

步骤 3:配置 wrangler.toml

name = "shortlink"
main = "src/index.js"
compatibility_date = "2025-01-01"

[[kv_namespaces]]
binding = "LINKS"
id = "把第一步的 id 粘这里"

四、部署 & 绑域名

步骤 4:部署并绑定自定义域名

wrangler deploy

部署完会得到一个 *.workers.dev 地址。想要自己的短域名,进 Cloudflare 面板 → Workers → 你的 Worker → Settings → Triggers → Add Custom Domain,比如 s.你的域名.com

五、加一条短链

步骤 5:添加一条短链

wrangler kv key put --binding=LINKS "gh" "https://github.com/xxx"

之后访问 https://s.你的域名.com/gh 就会跳过去。也能在面板 KV 界面手动加,适合偶尔用的时候。

两个要注意的点

  • KV 是最终一致:写入后全球生效大约 60 秒,别拿它做需要秒级一致的计数。
  • 免费额度:Workers 10 万请求/天、KV 10 万读/天,个人短链远用不到上限;超了是限流,不是扣费。

自建短链投入大概二十分钟,换来的是链接终身可控。

常见问题

自建短链需要备案吗?

不需要。Worker 和自定义域名都跑在 Cloudflare 上,不涉及国内服务器,无需 ICP 备案。

免费额度够个人用吗?

够。Workers 每天 10 万次请求、KV 每天 10 万次读,正常短链远到不了上限,超了是限流不是扣费。

相关阅读

上一篇 WordPress Redis 对象缓存实战:把重复的 MySQL 查询砍掉
下一篇 让 Claude Code 指向国产大模型:BASE_URL 接入指南