Á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ör | Határérték | Tipikus végpontok |
|---|---|---|
| Olvasás | 300/min | session.get, state.get, metadata.get, fájlolvasások, szokásos művelet állapota |
| Írás | 120/min | Há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és | 10/min | Futásidejű és telepítőfájlok feltöltése |
| Művelet | 30/min | Zárolási műveletek, eszközparancsok, egyéni naplók, egyéni értesítések, szerver által ellenőrzött eredmény rendezése |
| Token | 30/min | Iframe 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.
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.
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
sessionIdvagylockId, 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.
Ajánlott ügyfélviselkedés
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.geteredmé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/statekó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.
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/:sessionIdaz olvasási vödröt használja. - A
GET /api/extensions/sessions/:sessionId/stateaz olvasási vödröt használja. - A
PUT/PATCH /api/extensions/sessions/:sessionId/stateaz írási vödröt használja. - A
POST /api/extensions/sessions/:sessionId/filesa feltöltési gyűjtőt használja. - A
POST /api/extensions/sessions/:sessionId/actiona műveleti tárolót használja. - A
POST /api/extensions/sessions/:sessionId/device-commanda műveleti tárolót használja. - A
POST /api/extensions/sessions/:sessionId/logs/customa műveleti tárolót használja. - A
POST /api/extensions/sessions/:sessionId/notifications/customa műveleti tárolót használja. - A
GET /api/extensions/sessions/:sessionId/autha 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.writemetadata.writelock.actionnotifications.customdevice.commandfiles.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.