[ PROMPT_NODE_24300 ]
Smart Placement 配置说明
[ SKILL_DOCUMENTATION ]
# 智能放置配置
## wrangler.jsonc 设置
c
{
"$schema": "./node_modules/wrangler/config-schema.json",
"placement": {
"mode": "smart"
}
}
## 放置模式值
| 模式 | 行为 |
|------|----------|
| `"smart"` | 启用智能放置 - 基于流量分析的自动优化 |
| `"off"` | 显式禁用智能放置 - 始终在离用户最近的边缘运行 |
| 未指定 | 默认行为 - 在离用户最近的边缘运行 (与 `"off"` 相同) |
**注意:** 智能放置与显式放置是两个独立的功能。智能放置 (`mode: "smart"`) 使用自动分析。如需手动控制放置,请参阅显式放置选项(`region`, `host`, `hostname` 字段 - 本参考未涵盖)。
## 前端 + 后端拆分配置
### 前端 Worker (不使用智能放置)
c
// frontend-worker/wrangler.jsonc
{
"name": "frontend",
"main": "frontend-worker.ts",
// 无 "placement" - 在边缘运行
"services": [
{
"binding": "BACKEND",
"service": "backend-api"
}
]
}
### 后端 Worker (启用智能放置)
c
// backend-api/wrangler.jsonc
{
"name": "backend-api",
"main": "backend-worker.ts",
"placement": {
"mode": "smart"
},
"d1_databases": [
{
"binding": "DATABASE",
"database_id": "xxx"
}
]
}
## 要求与限制
### 要求
- **Wrangler 版本:** 2.20.0+
- **分析时间:** 最长 15 分钟
- **流量要求:** 持续的多位置流量
- **Workers 计划:** 所有计划 (免费版、付费版、企业版)
### 智能放置的影响范围
**关键限制 - 智能放置仅影响 `fetch` 处理程序:**
智能放置从根本上仅限于具有默认 `fetch` 处理程序的 Workers。这是一个关键的架构约束。
- ✅ **影响:** 仅 `fetch` 事件处理程序(默认导出的 fetch 方法)
- ❌ **不影响:**
- RPC 方法 (带有 `WorkerEntrypoint` 的服务绑定)
- 命名入口点 (除 `default` 之外的导出)
- 没有 `fetch` 处理程序的 Workers
- 队列消费者、定时处理程序或其他事件类型
**示例 - 智能放置仅影响 `fetch`:**
typescript
// ✅ 智能放置影响此项:
export default {
async fetch(request: Request, env: Env): Promise {
// 启用智能放置后,此代码在靠近后端的位置运行
const data = await env.DATABASE.prepare('SELECT * FROM users').all();
ret