[ PROMPT_NODE_24298 ]
Smart Placement API 参考
[ SKILL_DOCUMENTATION ]
# 智能放置 API
## 放置状态 API
通过 Cloudflare API 查询 Worker 放置状态:
bash
curl -X GET "https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/workers/services/{WORKER_NAME}"
-H "Authorization: Bearer "
-H "Content-Type: application/json"
响应包含 `placement_status` 字段:
typescript
type PlacementStatus =
| undefined // 尚未分析
| 'SUCCESS' // 优化成功
| 'INSUFFICIENT_INVOCATIONS' // 流量不足
| 'UNSUPPORTED_APPLICATION'; // 使 Worker 变慢(已回退)
## 状态含义
**`undefined` (不存在)**
- Worker 尚未被分析
- 始终在离用户最近的默认边缘位置运行
**`SUCCESS`**
- 分析完成,智能放置已激活
- Worker 在最佳位置运行(可能是边缘或远程)
**`INSUFFICIENT_INVOCATIONS`**
- 请求量不足以做出放置决策
- 需要持续的多区域流量
- 始终在默认边缘位置运行
**`UNSUPPORTED_APPLICATION`** (罕见,<1% 的 Workers)
- 智能放置导致 Worker 变慢
- 放置决策已回退
- 始终在边缘位置运行
- 除非重新部署,否则不会再次分析
## cf-placement 响应头 (Beta)
智能放置会添加指示路由决策的响应头:
typescript
// 远程放置 (智能放置路由请求)
"cf-placement: remote-LHR" // 路由到伦敦
// 本地放置 (默认边缘路由)
"cf-placement: local-EWR" // 停留在纽瓦克边缘
格式: `{placement-type}-{IATA-code}`
- `remote-*` = 智能放置路由到远程位置
- `local-*` = 停留在默认边缘位置
- IATA 代码 = 距离数据中心最近的机场
**警告:** Beta 功能,可能会在正式发布前移除。
## 在代码中检测智能放置
**注意:** `cf-placement` 响应头是 Beta 功能,可能会更改或移除。
typescript
export default {
async fetch(request: Request, env: Env): Promise {
const placementHeader = request.headers.get('cf-placement');
if (placementHeader?.startsWith('remote-')) {
const location = placementHeader.split('-')[1];
console.log(`智能放置已路由至 ${location}`);
} else if (placementHeader?.startsWith('local-')) {
const location = placementHeader.split('-')[1];
console.log(`正在边缘位置 ${location} 运行`);
}
return new Response('OK');
}
} satisfies ExportedHandler;
## 请求持续时间指标
可在 Cloudflare 控制面板中查看