跳转到内容
本站为社区维护的非官方中文翻译,与 Cloudflare, Inc. 无关联。本站不提供账户登录,请勿在任何非官方站点输入您的 Cloudflare 账户信息。官方文档:developers.cloudflare.com

使用快照

最后更新 查看 MarkdownAgent 设置

快照让你从正在运行的 Container 保存某个时间点的文件系统状态。本页示例使用 Durable Object Container API。

创建容器快照

使用 snapshotContainer() 捕获完整的容器文件系统。快照是不可变的。如果你恢复快照然后更改文件,请创建新快照以持久化这些更改。

返回的快照句柄是一个普通数据对象。你可以存储它并稍后恢复,包括从另一个 Durable Object 恢复:

src/index.jsjs
import { DurableObject } from "cloudflare:workers";

export class MyDurableObject extends DurableObject {
	async saveContainer() {
		const containerSnapshot = await this.ctx.container.snapshotContainer({
			name: "before-upgrade",
		});

		await this.ctx.storage.put("containerSnapshot", containerSnapshot);
	}
}
src/index.tsts
import { DurableObject } from "cloudflare:workers";

export class MyDurableObject extends DurableObject {
	async saveContainer() {
		const containerSnapshot = await this.ctx.container.snapshotContainer({
			name: "before-upgrade",
		});

		await this.ctx.storage.put("containerSnapshot", containerSnapshot);
	}
}

恢复容器快照

加载已保存的快照句柄。然后,在启动另一个容器时将其传给 this.ctx.container.start():

src/index.jsjs
import { DurableObject } from "cloudflare:workers";

export class MyDurableObject extends DurableObject {
	async restoreContainer() {
		const containerSnapshot = await this.ctx.storage.get("containerSnapshot");

		if (!containerSnapshot) {
			return;
		}

		this.ctx.container.start({ containerSnapshot, enableInternet: false });
	}
}
src/index.tsts
import { DurableObject } from "cloudflare:workers";

export class MyDurableObject extends DurableObject {
	async restoreContainer() {
		const containerSnapshot =
			await this.ctx.storage.get<ContainerSnapshot>("containerSnapshot");

		if (!containerSnapshot) {
			return;
		}

		this.ctx.container.start({ containerSnapshot, enableInternet: false });
	}
}

了解保留期

快照具有隐式的 30 天生存时间。每次恢复都会刷新该生存时间。

目前还不能设置自定义生存时间。

相关资源

这篇文档对您有帮助吗?