技能 编程开发 Framer API限流与重试策略

Framer API限流与重试策略

v20260423
framer-rate-limits
本指南提供处理Framer API速率限制、限流和连接错误的健壮模式。内容涵盖了指数退避(Exponential Backoff)、重试机制、CMS批量写入以及插件操作的去抖动(Debouncing),确保了API调用的稳定性和高吞吐量。
获取技能
261 次下载
概览

Framer Rate Limits

Overview

Handle Framer API rate limits for Server API and plugin operations. The Server API uses WebSocket, so rate limits apply per-connection. CMS operations are limited by collection size and concurrent writes.

Rate Limit Reference

OperationLimitNotes
Server API connections1 per siteWebSocket, persistent
CMS setItems~100 items/callBatch larger sets
CMS getItemsNo hard limitReturns all items
Plugin API callsDebouncedFramer throttles internally
Publish~1/minuteSite publishing
Image uploadConcurrent limitVia CMS image fields

Instructions

Step 1: Batch CMS Writes

async function batchSetItems(collection: any, items: any[], batchSize = 100) {
  for (let i = 0; i < items.length; i += batchSize) {
    const batch = items.slice(i, i + batchSize);
    await collection.setItems(batch);
    console.log(`Synced ${Math.min(i + batchSize, items.length)}/${items.length}`);
    if (i + batchSize < items.length) {
      await new Promise(r => setTimeout(r, 1000)); // 1s between batches
    }
  }
}

Step 2: Debounced Plugin Operations

// Debounce rapid plugin UI interactions
function debounce<T extends (...args: any[]) => any>(fn: T, ms = 300) {
  let timer: NodeJS.Timeout;
  return (...args: Parameters<T>) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), ms);
  };
}

const debouncedSync = debounce(async () => {
  await syncCollection();
}, 500);

Step 3: Retry for Server API

async function withRetry<T>(fn: () => Promise<T>, maxRetries = 3): Promise<T> {
  for (let i = 0; i <= maxRetries; i++) {
    try {
      return await fn();
    } catch (err: any) {
      if (i === maxRetries) throw err;
      const delay = 1000 * Math.pow(2, i);
      console.log(`Retry ${i + 1} in ${delay}ms`);
      await new Promise(r => setTimeout(r, delay));
    }
  }
  throw new Error('Unreachable');
}

Error Handling

ErrorCauseSolution
WebSocket disconnectedConnection timeoutReconnect with backoff
setItems slowLarge batchSplit into chunks of 100
Publish rate limitedToo frequentWait 60s between publishes

Resources

Next Steps

For security, see framer-security-basics.

信息
分类 编程开发
名称 framer-rate-limits
版本 v20260423
大小 2.98KB
更新时间 2026-04-26
语言