Rate Limits
Zwei Familien von Limits - was der Plan erlaubt und wie schnell jemand einen Endpoint aufrufen darf - mit Zahlen aus der API, die sie durchsetzt.
cmssy setzt zwei verschiedene Arten von Limits durch, und sie beantworten verschiedene Fragen. Ein Plan-Kontingent sagt, wie viel Produkt deine Organisation gekauft hat: Seiten, Speicher, Delivery-Requests pro Monat. Ein Schutzlimit sagt, wie schnell irgendjemand einen Endpoint aufrufen darf - in jedem Plan. Ein Request kann bequem innerhalb deines Kontingents liegen und trotzdem von einem Schutzlimit abgewiesen werden, und dieses Limit ist es, das mit 429 antwortet.
Was ein 429 bedeutet
Jedes Schutzlimit weist gleich ab: HTTP 429 mit einem Retry-After-Header, der die Sekunden bis zum Öffnen des Fensters trägt. Warte so lange und versuche es dann erneut.
Das Fenster ist fest, kein Eimer, der leerläuft, während du klopfst. Ein Client, der 429 wie 500 behandelt und sofort neu versucht, bleibt für den Rest des Fensters abgewiesen und verbrennt dabei die eigene Kapazität. Lies den Header.
Delivery wird pro Workspace budgetiert
Die Delivery-API rufst du von deinem eigenen Server auf, also gilt ihr Budget pro Workspace, nicht pro Aufrufer. Jeder Besucher deiner Seite wird aus einer Handvoll deiner regionalen IPs gerendert, und ein Crawler, der einen kalten Cache aufwärmt, würde ein Aufrufer-Budget in Sekunden verbrauchen. Die zweite Delivery-Zeile ist genau dieses weitere Missbrauchsnetz, gezählt pro Adresse - die Adresse, die uns erreicht, egal mit welchem Token - und nicht das Budget, mit dem deine Seite arbeitet.
Eine Seite, die auf ihrem eigenen Server rendert, kann uns sagen, für welchen Besucher eine Anfrage ist: schick seine Adresse in x-cmssy-client-ip zusammen mit einem auf den Workspace beschränkten API-Token in x-cmssy-api-token, und jedes Budget pro Adresse - Delivery, Warenkorb, Mitglieder-Login, Formulareinsendungen - wird pro Besucher statt pro Server gezählt. Das Paar wird nur anerkannt, wenn der Token zu diesem Workspace gehört und sein Besitzer noch Zugriff darauf hat; halte ihn serverseitig, nie im Browser. Der Token wird einmal pro Minute und Server geprüft, und diese Prüfung kostet deinen Server einen Slot seines eigenen Delivery-Budgets. Solange das Paar anerkannt wird, beschreiben Retry-After und die X-RateLimit-*-Header den Kübel des Besuchers, und X-RateLimit-Scope nennt den Bereich, der geantwortet hat: workspace oder caller.
Jeder Read zählt, gecacht oder nicht. Ein CDN vor deiner Seite ist genau das, was dich im Budget hält, weil es die Reads abschneidet, die uns überhaupt erreichen - aber ein Read, der uns erreicht, wird gezählt, ob du die Antwort cachst oder nicht.
Tiefe ist kein Tempo
Zwei Limits messen Ebenen statt Requests: Eine Query, die tiefer verschachtelt ist als das Limit, wird sofort abgelehnt, und Warten ändert daran nichts. Flache die Query ab.
Monatliche Kontingente sind gepoolt
Plan-Kontingente gehören der Organisation, nicht einem einzelnen Workspace. Delivery-Requests und Bandbreite werden über alle Workspaces der Organisation gepoolt und für den Kalendermonat gezählt.
Die Tabellen lesen
Beide Tabellen unten werden von der API geliefert, die die Zahlen durchsetzt, also kann diese Seite nicht vom Produkt abweichen. Als anpassbar markierte Zeilen kann ein Betreiber für ein Deployment verschieben; jede andere Zahl gilt für alle gleich.