Ugrás a fő tartalomhoz

Árfolyamkorlátok

A Chastify sebességkorlátokat állít be a kiterjesztett API forgalomhoz a zárolási munkamenetek, a tárolók, az eszközök és az értesítési rendszerek védelme érdekében.

A sebességkorlátok mind a Chastify-n keresztül irányított iframe bridge forgalomra, mind a fejlesztői API-kulcsokkal végrehajtott háttérhívásokra vonatkoznak.

Jelenlegi bővítménytárolók

VödörHatárértékTipikus végpontok
Olvasás300/minsession.get, state.get, metadata.get, fájlolvasások, szokásos művelet állapota
Írás120/minHáttérállapot-írások, metaadat-frissítések, rendszeres műveletű konfiguráció, szerver által ellenőrzött futtatás létrehozása
Feltöltés10/minFutásidejű és telepítőfájlok feltöltése
Művelet30/minZárolási műveletek, eszközparancsok, egyéni naplók, egyéni értesítések, szerver által ellenőrzött eredmény rendezése
Token30/minIframe munkamenet indítása/hitelesítési token generálása

A korlátok kiértékelése egyperces időablakon keresztül történik.

megjegyzés

Ezek a platform alapértelmezett beállításai. A Chastify rendszergazdái/webhely-tulajdonosok bővítményenként konfigurálhatnak felülbírálásokat a hivatalos vagy szokatlanul nagy mennyiségű bővítményhez. A felülbírálásokat a bővítményalkalmazás konfigurációja tárolja, és rövid időre gyorsítótárazza a Redis a gyors kérésútvonal-keresés érdekében.

információ

A feltöltési és műveleti tárolók szándékosan szűkebbek, mint az olvasási/állapoti tárolók. A feltöltések tárhelyet és sávszélességet fogyasztanak. A műveletek befolyásolhatják a zárolási állapotot, az eszközöket, az értesítéseket és a felhasználó által látható előzményeket.

Hogyan számolják a kulcsokat

A sebességkorlátozási kulcsok a következők:

  • hitelesített Chastify felhasználói azonosító, amikor a saját felhasználói felülete meghív egy végpontot
  • Fejlesztői API-kulcs azonosítója, amikor a háttérrendszer meghívja a bővítmény munkamenet-végpontjait
  • Névtelen vagy nem hitelesített elérési utak IP-címe
  • a cél sessionId vagy lockId, ha elérhető

Ez azt jelenti, hogy egyetlen zajos bővítmény-munkamenet nem emésztheti fel a teljes globális bővítmény API-költségvetését.

Az iframe-nek vagy a backendnek a 429 Too Many Requests kódot normál újrapróbálkozási állapotként kell kezelnie.

Exponenciális leállás alkalmazása ismételt hibák esetén:

async function callWithBackoff<T>(fn: () => Promise<T>, attempts = 4): Promise<T> {
let delayMs = 500;

for (let attempt = 1; attempt <= attempts; attempt += 1) {
try {
return await fn();
} catch (error: any) {
const status = error?.status ?? error?.response?.status;
if (status !== 429 || attempt === attempts) throw error;

await new Promise((resolve) => setTimeout(resolve, delayMs));
delayMs *= 2;
}
}

throw new Error("request_failed");
}

Iframe Bridge útmutató

iframe bridge kliensek esetén:

  • A session.get eredményeket az oldal élettartamára gyorsítótárazd, kivéve, ha friss zárolási adatokra van szükséged.
  • Tárold az átmeneti felhasználói felület módosításait helyben, és küldd el a megbízható módosításokat a háttérrendszerednek.
  • Kerüld a gyors ciklusok lekérdezését. Inkább a felhasználó által aktivált olvasásokat vagy a lassú frissítési intervallumokat részesítsd előnyben.

Példa a visszapattanás utáni mentésre a háttérben:

let saveTimer: number | undefined;

function scheduleStateSave(data: Record<string, unknown>) {
window.clearTimeout(saveTimer);
saveTimer = window.setTimeout(() => {
fetch("/your-extension-backend/state", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(data),
}).catch(console.error);
}, 500);
}

Háttérbővítmények útmutatója

Fejlesztői API-kulccsal történő háttérhívások esetén:

  • A privilegizált műveleteket tartsa szerver által ellenőrzött és felhasználó által aktivált állapotban.
  • A PUT/PATCH /api/extensions/sessions/:sessionId/state kódot csak a backend rendszerből, fejlesztői API hitelesítő adatokkal használhatod.
  • Ne próbálja meg vakon újra a zárolási műveleteket, ha az elsőre sikeres lehetett.
  • A játék/kihívás rendezését idempotenssé kell tenni egy futási azonosítóval.
  • Csak akkor töltsön fel fájlokat, ha a felhasználó kifejezetten beküldi a fájlt.
  • Tárolja saját külső rekordjait, ha nagyobb frekvenciájú telemetriára van szüksége.
vigyázat

Soha ne emelj műveleti korlátokat a nem ellenőrzött böngészőhívások kompenzálására. A böngésző iframe kódja nem megbízható. Az érzékeny mutációkat a háttérrendszernek validálnia kell a Chastify meghívása előtt.

Melyik vödörre számíthatok?

Gyakori példák:

  • A GET /api/extensions/sessions/:sessionId az olvasási vödröt használja.
  • A GET /api/extensions/sessions/:sessionId/state az olvasási vödröt használja.
  • A PUT/PATCH /api/extensions/sessions/:sessionId/state az írási vödröt használja.
  • A POST /api/extensions/sessions/:sessionId/files a feltöltési gyűjtőt használja.
  • A POST /api/extensions/sessions/:sessionId/action a műveleti tárolót használja.
  • A POST /api/extensions/sessions/:sessionId/device-command a műveleti tárolót használja.
  • A POST /api/extensions/sessions/:sessionId/logs/custom a műveleti tárolót használja.
  • A POST /api/extensions/sessions/:sessionId/notifications/custom a műveleti tárolót használja.
  • A GET /api/extensions/sessions/:sessionId/auth a token vödröt használja.

Future Granulated Vödrök

A jelenlegi tárolók széleskörűek. A Chastify tovább bonthatja őket a fejlesztői API bővülésével, például:

  • state.write
  • metadata.write
  • lock.action
  • notifications.custom
  • device.command
  • files.upload

A kiterjesztésekre vonatkozó korlátokat a Chastify adminisztrátorok/webhelytulajdonosok növelhetik, ha egy hivatalos vagy jóváhagyott, nagy volumenű bővítménynek jogos igénye van rá. A klienseket úgy tervezze meg, hogy a 429 kezelése általános legyen, és ne függjön a pontos tárolónevektől vagy a rögzített platform alapértelmezett beállításaitól.