工程開發
upstash-ratelimit-ts avatar

upstash-ratelimit-ts

適用於 TypeScript 的無連線 HTTP 速率限制 SDK,專為無伺服器 (Serverless)、邊緣運算 (Edge) 環境及 Upstash Redis 設計。

簡介

upstash-ratelimit-ts SDK 是一款專為現代分散式架構設計的強大無連線速率限制解決方案。透過使用 HTTP 取代傳統 TCP 連線,此程式庫針對無伺服器平台(如 AWS Lambda、Vercel Functions、Cloudflare Workers 與 Fastly Compute@Edge)進行了最佳化。它使開發人員能夠在 Node.js、Deno 與各種邊緣運算環境中,輕鬆防止服務濫用、調整流量並管理 API 使用成本。

  • 支援多種速率限制演算法:固定視窗 (Fixed Window)、滑動視窗 (Sliding Window) 與權杖桶 (Token Bucket),實現對請求頻率的精確控制。

  • 與 Upstash Redis 原生整合,在全域部署中實現低延遲的狀態持續性。

  • 支援分析功能,可直接透過 Upstash 儀表板追蹤被封鎖與成功的請求。

  • 內建流量保護功能,包括基於 IP 的封鎖、使用者代理 (User-Agent) 過濾與基於國家的存取控制。

  • 具備極高的可攜性,可在 WebAssembly、瀏覽器環境及無法維持持久 TCP 連線的無伺服器計算模型中順暢運作。

  • 若要開始使用,請透過傳入 Redis 連線字串與選擇的演算法來初始化 Ratelimit 實例,然後將其套用到特定路由或 API 處理常式中。

  • 請確保正確設定 UPSTASH_REDIS_REST_URL 與 UPSTASH_REDIS_REST_TOKEN 等環境變數,以建立無連線工作階段。

  • 在 limit 方法中使用識別碼參數(例如 IP 位址或使用者 ID),以便針對每個使用者進行細粒度的流量調節。

  • 利用 waitUntil 函式進行非同步的分析報告,以最大限度地減少無伺服器環境中的請求延遲。

  • 請注意 Redis 的成本影響;若在多個應用程式或服務間共用單一 Redis 執行個體,建議使用前綴 (prefix) 來管理鍵值命名空間。

倉庫統計

Star 數
2,036
Fork 數
47
Open Issue 數
5
主要語言
TypeScript
預設分支
main
同步狀態
閒置
最近同步時間
2026年5月3日 上午02:24
在 GitHub 查看