Les objets durables expliqués
Comprenez les objets durables pour les applications sans serveur avec état, en maintenant un état cohérent à l’échelle mondiale.
Les objets durables expliqués est une leçon Edge Computing with Cloudflare Workers & Deno gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Edge Computing with Cloudflare Workers & Deno, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Edge Computing with Cloudflare Workers & Deno comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
The State Problem at the Edge
Serverless functions, like Cloudflare Workers, are typically stateless. This means each request is processed independently, without remembering past interactions.
While great for scalability and cost-efficiency, what if you need to maintain a consistent piece of information across multiple requests or users globally? Think about a live chat room, a game lobby, or a shared counter.
Introducing Durable Objects
Cloudflare Durable Objects solve this fundamental challenge. They are a powerful primitive for building stateful serverless applications directly at the edge.
- They provide a single-instance, globally consistent object.
- Each Durable Object instance has a unique ID and its own private storage.
- They act like tiny, persistent servers that live at the edge.
Unique IDs & Global Consistency
The core concept behind Durable Objects is their unique identity. When you create or retrieve a Durable Object using a specific ID, Cloudflare ensures that only one instance of that object exists and runs globally.
No matter where a request originates from (e.g., Tokyo, New York, London), if it targets the same Durable Object ID, it will be routed to that single, consistent instance. This eliminates the need for complex distributed synchronization.
Anatomy of a Durable Object
A Durable Object is defined as a standard JavaScript class. It must have:
- A
constructor(state, env)method, wherestateprovides access to its storage andenvholds environment variables. - An
async fetch(request)method, which processes incoming HTTP requests, similar to a regular Worker.
It's essentially a self-contained, stateful mini-Worker.
Persistent Storage with state.storage
Each Durable Object instance has its own private, durable key-value storage, accessible via this.state.storage. This allows the object to persist data across invocations and even across restarts.
await this.state.storage.put('key', value): Stores data.await this.state.storage.get('key'): Retrieves data.await this.state.storage.delete('key'): Removes data.
Values can be any JSON-serializable type, making it versatile for various data needs.
Code: Counter Worker & DO
This example shows a Cloudflare Worker interacting with a simple Counter Durable Object. The DO maintains a count that persists across requests and is globally consistent.
To run this, you'd define the Counter Durable Object binding in your wrangler.toml file.
export class Counter {
constructor(state, env) {
this.state = state;
this.env = env;
}
async fetch(request) {
let url = new URL(request.url);
// Retrieve current count from storage, default to 0
let currentCount = (await this.state.storage.get("value")) || 0;
if (url.pathname === "/increment") {
currentCount++;
await this.state.storage.put("value", currentCount);
return new Response(`Count: ${currentCount}`);
} else if (url.pathname === "/decrement") {
currentCount--;
await this.state.storage.put("value", currentCount);
return new Response(`Count: ${currentCount}`);
} else if (url.pathname === "/get") {
return new Response(`Count: ${currentCount}`);
}
return new Response("Not found", { status: 404 });
}
}
export default {
async fetch(request, env) {
// Get a unique Durable Object ID based on a name
// 'COUNTER' is the binding name configured in wrangler.toml
let id = env.COUNTER.idFromName("global-counter");
// Get a 'stub' (a proxy) to interact with the Durable Object
let stub = env.COUNTER.get(id);
// Forward the incoming request to the Durable Object's fetch method
return stub.fetch(request);
}
};How the Counter Code Works
1. The Counter class defines the Durable Object's behavior, handling /increment, /decrement, and /get routes and persisting its value.
2. The main Worker's fetch handler:
- It uses
env.COUNTER.idFromName("global-counter")to obtain a deterministic ID for our counter. env.COUNTER.get(id)returns a stub, which is a network proxy to the Durable Object.stub.fetch(request)forwards the original request to the Durable Object instance, allowing it to process the request and update its state.
Global Consistency in Action
Imagine users from different locations (e.g., Europe, Asia, Americas) all interacting with the /increment endpoint of your Worker. Because they all target the "global-counter" ID, Cloudflare guarantees they will all interact with the exact same instance of the Counter Durable Object.
This ensures that the count is always consistent, regardless of the user's location, simplifying complex distributed state management that would otherwise be very challenging.
Common Use Cases for DOs
Durable Objects are ideal for scenarios requiring strong consistency and shared, mutable state at the edge:
- Real-time Collaboration: Shared whiteboards, document editing.
- Gaming: Game lobbies, player state, matchmaking.
- Live Chat: Chat rooms, message queues for real-time communication.
- Stateful APIs: Managing user sessions, shopping carts, or unique resource locks.
They bring traditional stateful patterns to the serverless edge, making complex applications simpler to build.
Quick Check: Durable Objects
Which of the following best describes the primary benefit of Cloudflare Durable Objects?
Recap: Durable Objects Explained
In this lesson, we explored Cloudflare Durable Objects, a powerful tool for stateful serverless applications.
- They provide globally consistent, single-instance state at the edge.
- Each DO has a unique ID and private, durable storage (
state.storage). - Workers interact with DOs by obtaining stubs and forwarding requests.
- They are ideal for real-time, collaborative, and stateful applications that demand strong consistency.
Durable Objects bridge the gap between stateless serverless and traditional stateful services, simplifying complex distributed systems.
Apprends Edge Computing with Cloudflare Workers & Deno avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 12
- Leçons
- 47
Questions Fréquemment Posées
La leçon « Les objets durables expliqués » est-elle gratuite ?
Oui — le texte complet de « Les objets durables expliqués » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Edge Computing with Cloudflare Workers & Deno, passe à CoddyKit PRO. Le cours Edge Computing with Cloudflare Workers & Deno comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Les objets durables expliqués » ?
Comprenez les objets durables pour les applications sans serveur avec état, en maintenant un état cohérent à l’échelle mondiale. Tu pratiques Edge Computing with Cloudflare Workers & Deno avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Edge Computing with Cloudflare Workers & Deno ?
Aucune expérience préalable n'est requise. Edge Computing with Cloudflare Workers & Deno sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Les objets durables expliqués » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Edge Computing with Cloudflare Workers & Deno ?
Oui. Chaque leçon Edge Computing with Cloudflare Workers & Deno inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Stockage Cloudflare KV
- Les objets durables expliqués
- Intégrer Deno au stockage en périphérie
- Interroger une base D1 SQL en périphérie