运行时能力
应用支持什么、不支持什么,以及各项限制。
下表是应用当前的运行时能力。
发布与部署
| 能力 | 状态 | 说明 |
|---|---|---|
| Worker → 版本 → 部署 | 支持 | 创建版本不会上线;部署后才成为线上版本。创建版本时设置 deploy: true 可一步完成 |
| 回滚 | 支持 | 对旧版本再创建一次部署,无需重新上传文件 |
| 整站替换 | 支持 | 每个版本的文件清单必须完整列出站点的全部文件;只有内容变化的文件需要上传,没变的不会重传 |
| 灰度发布 | 不支持 | 一个部署只能让一个版本占 100% |
| 保留版本数 | 限制 | 最近 100 个版本 |
| 单个脚本大小 | 限制 | 压缩后 10 MiB |
| 部署超时 | 限制 | 10 分钟内没有完成即失败 |
静态资源
| 能力 | 状态 | 说明 |
|---|---|---|
| 内容寻址去重 | 支持 | 相同内容只存一份,重复发布不会重复上传 |
| 路径与大小 | 限制 | 每个版本最多 100000 个文件,单个文件最大 25 MiB |
html_handling | 支持 | 可选 auto-trailing-slash、force-trailing-slash、drop-trailing-slash、none |
not_found_handling | 支持 | 可选 none、404-page、single-page-application |
_headers | 支持 | 仅作用于静态资源的响应,最多 100 条规则,每行最多 2000 字符 |
_redirects | 支持 | 仅作用于静态资源的响应,最多 2000 条静态规则和 100 条动态规则,每行最多 1000 字符 |
_headers 和 _redirects 不会作用于 Worker 代码生成的响应。需要跨域访问时,在代码里自己设置 CORS 头:
const CORS = {
"access-control-allow-origin": "*",
"access-control-allow-methods": "GET, POST, OPTIONS",
"access-control-allow-headers": "content-type",
};
export default {
async fetch(request) {
if (request.method === "OPTIONS") return new Response(null, { status: 204, headers: CORS });
return Response.json({ ok: true }, { headers: CORS });
},
};出站请求
| 能力 | 状态 | 说明 |
|---|---|---|
| 访问公网地址 | 支持 | 代码里的 fetch() 可以请求任意公网地址 |
| 访问平台上的其他应用 | 支持 | 请求其他应用的地址,得到的是对方应用的响应 |
绑定
| 类型 | 状态 | 说明 |
|---|---|---|
d1 | 支持 | 在创建版本时声明 |
kv_namespace | 支持 | 在创建版本时声明 |
r2_bucket | 支持 | 在创建版本时声明 |
secret_text | 支持 | 在创建版本时声明;值通过密钥接口写入 |
plain_text | 支持 | 在创建版本时声明 |
json | 支持 | 在创建版本时声明 |
praxis_token | 支持 | 启用 owner 组织的平台 API 访问,不注入 token |
praxis_vault_ref | 不可用 | 当前不能使用 |
其他类型(如 service、queue、durable_object_namespace、ai) | 不支持 | 创建版本时返回 UNSUPPORTED |
密钥
| 能力 | 状态 | 说明 |
|---|---|---|
| 写入密钥 | 支持 | PUT /application/v1/workers/{id}/secrets/{name}。写入后会基于当前版本派生一个新版本并部署 |
| 读回密钥值 | 不支持 | 值只写不读,任何接口都不会返回 |
兼容标志
| 能力 | 状态 | 说明 |
|---|---|---|
compatibility_flags | 支持 | 创建版本时传入,会原样生效 |
global_fetch_strictly_public | 固定开启 | 每个版本都会带上,不能关闭;传入 global_fetch_private_origin 或 no_global_fetch_strictly_public 会返回 400 |
调用平台 API
在要部署的版本中声明绑定:
{ "type": "praxis_token", "name": "PRAXIS_API_TOKEN" }应用可以不带 API Key 调用 Develop API:
export default {
async fetch() {
return fetch("https://api-develop.deepraxis.com/application/v1/workers");
}
};应用拥有与 owner 组织 API Key 相同的组织访问权限。其他组织的资源返回不存在。应用代码不会收到 token 或密钥,也不会生成 env.PRAXIS_API_TOKEN。未声明该绑定时,受保护接口返回 401,除非请求自行提供有效凭证。其他目标域名的请求保持原样。
Praxis SDK 使用同一条访问路径:省略 apiKey,将 baseUrl 设为 Develop API 地址,无需修改 SDK。已有应用需要部署声明该绑定的版本后才能启用。移除绑定会在新部署生效、路由缓存刷新后停止注入身份(最多 10 秒)。