← Cloudflare Durable Objects / durable-objects / reference
Stav v paměti v objektu Durable Object
Stav v paměti znamená, že každý Durable Object má v daném okamžiku vždy jen jednu aktivní instanci. Všechny požadavky odeslané danému Durable Object zpracovává tatáž instance. Část stavu tak lze ukládat do paměti.
Proměnné v Durable Object si udrží svůj stav, dokud není Durable Object odstraněn z paměti.
Běžným postupem je inicializovat Durable Object z trvalé úložiště a nastavit proměnné instance při prvním přístupu. Protože další přístupy jsou směrovány na stejný Durable Object, je pak možné vracet již inicializované hodnoty bez dalších volání do trvalého úložiště.
import { DurableObject } from "cloudflare:workers";
export class Counter extends DurableObject {
constructor(ctx, env) {
super(ctx, env);
// `blockConcurrencyWhile()` ensures no requests are delivered until
// initialization completes.
this.ctx.blockConcurrencyWhile(async () => {
let stored = await this.ctx.storage.get("value");
// After initialization, future reads do not need to access storage.
this.value = stored || 0;
});
}
// Handle HTTP requests from clients.
async fetch(request) {
// use this.value rather than storage
}
}Konkrétní instance Durable Object může sdílet globální paměť s dalšími instancemi definovanými ve stejném kódu Workeru.
V předchozím příkladu použití globální proměnné value místo instanční proměnné this.value by bylo nesprávné. Dvě různé instance Counter budou mít každá vlastní oddělenou paměť pro this.value, ale mohou sdílet paměť pro globální proměnnou value, což vede k neočekávaným výsledkům. Proto je nejlepší se globálním proměnným vyhnout.