# 限度
* [脚本大小](https://developers.cloudflare.com/workers/about/limits/#script-size)
* [脚本数量](https://developers.cloudflare.com/workers/about/limits/#number-of-scripts)
* [请求限制](https://developers.cloudflare.com/workers/about/limits/#request-limits)
* [突发速率限制](https://developers.cloudflare.com/workers/about/limits/#burst-rate-limit)
* [每日请求限制](https://developers.cloudflare.com/workers/about/limits/#daily-request-limit)
* [失败打开](https://developers.cloudflare.com/workers/about/limits/#fail-open)
* [失败关闭](https://developers.cloudflare.com/workers/about/limits/#fail-closed)
* [CPU /执行时间限制](https://developers.cloudflare.com/workers/about/limits/#cpu-execution-time-limit)
* [记忆](https://developers.cloudflare.com/workers/about/limits/#memory)
* [子要求](https://developers.cloudflare.com/workers/about/limits/#subrequests)
* [工作者脚本可以发出子请求以加载Internet上的其他站点吗?](https://developers.cloudflare.com/workers/about/limits/#can-a-workers-script-make-subrequests-to-load-other-sites-on-the-internet)
* [我可以进行几个子请求?](https://developers.cloudflare.com/workers/about/limits/#how-many-subrequests-can-i-make)
* [我的工作人员响应用户后,我可以提出子请求吗?](https://developers.cloudflare.com/workers/about/limits/#can-i-make-a-subrequest-after-my-worker-has-responded-to-the-user)
* [子请求需要多长时间?](https://developers.cloudflare.com/workers/about/limits/#how-long-can-a-subrequest-take)
* [同时打开连接](https://developers.cloudflare.com/workers/about/limits/#simultaneous-open-connections)
* [千伏](https://developers.cloudflare.com/workers/about/limits/#kv)
* [环境变量](https://developers.cloudflare.com/workers/about/limits/#environment-variables)
# 计划限额概述
| 计划 | [CPU限制](https://developers.cloudflare.com/workers/about/limits/#cpu-execution-time-limit) | [每日请求限制](https://developers.cloudflare.com/workers/about/limits/#daily-request-limit) | [突发速率限制](https://developers.cloudflare.com/workers/about/limits/#burst-rate-limit) |
| --- | --- | --- | --- |
| 自由 | 10毫秒 | 100,000 | 每分钟1000个请求 |
| [无限](https://developers.cloudflare.com/workers/about/pricing) | 50毫秒 | 没有 | 没有 |
| 附加\* | \-- | \-- | \-- |
## 脚本大小
压缩后,Workers脚本以及任何[资产绑定的](https://developers.cloudflare.com/workers/tooling/api/bindings)大小最大为1MB。
## 脚本数量
除非作为企业级合同的一部分另行协商,否则在任何给定时间,所有Worker帐户最多只能使用30个脚本。
**注意:**app Workers脚本不计入此限制。
## 请求限制
无限(收费)Workers脚本可自动扩展到全球成千上万的Cloudflare边缘服务器上;工人每秒可以处理的请求数量没有一般限制。
Cloudflare的滥用保护方法不会影响意图良好的流量。但是,如果每秒从少量客户端IP地址发送成千上万的请求,则可能会无意中触发Cloudflare的滥用保护。如果您希望收到`1015`响应流量的错误或希望您的应用程序发生这些错误,请与Cloudflare联系以增加您的限制。
突发速率和每日请求限制适用于帐户级别,这意味着worker.dev子域上的请求计入与您的区域相同的限制。升级到[付费计划](https://dash.cloudflare.com/?account=workers/plans)即可自动取消这些限制。
### 突发速率限制
使用“免费工作者”计划的帐户每分钟只能有1000个请求的突发速率限制。访问受速率限制的网站的用户将收到Cloudflare 1015错误页面。但是,如果您以编程方式调用脚本,则可以检测速率限制页面,并通过查找HTTP状态代码429自行处理。
### 每日请求限制
使用“免费工作者”计划的帐户每天的请求限额为100,000个。免费计划的每日请求计数在UTC午夜重置。可以通过以下两种方式切换其对应的[路由](https://developers.cloudflare.com/workers/about/routes/)来配置由于每日请求限制错误而导致失败的Worker:*失败打开*和*失败关闭*。
#### 失败打开
处于故障开放模式的路由将绕过故障的工作器,并阻止其对传入流量进行操作。传入的请求的行为就像没有工作程序一样。
#### 失败关闭
处于失败关闭模式的路由将向访问者显示Cloudflare 1027错误页面,表示临时禁用了Worker。如果您的工作人员正在执行与安全相关的任务,我们建议使用此选项。
## CPU /执行时间限制
大多数工作者请求消耗的时间少于一毫秒。很少会找到超出CPU时间限制的正常运行的Workers脚本。工作者在免费套餐上最多可能消耗10毫秒,而在无限套餐上最多可能消耗50毫秒。对于大多数用例(包括应用程序托管),免费计划中的10ms预留空间足以执行。
对Workers脚本的实际运行时间没有限制。只要发送请求的客户端保持连接状态,Workers脚本就可以继续处理,发出子请求并代表该请求设置超时。当客户端断开连接时,与该客户端请求关联的所有任务都将被取消。您可以用来[`event.waitUntil()`](https://developers.cloudflare.com/workers/reference/apis/fetch-event/)将取消延迟另外30秒钟,或者直到承诺`waitUntil()`完成为止。
## 记忆
在许多全局Cloudflare边缘服务器中,只有一个Workers实例运行。每个Worker实例最多可以消耗128MB的内存。使用[全局变量](https://developers.cloudflare.com/workers/reference/apis/standard/)在各个节点上的请求之间保留数据;但是请注意,节点有时会从内存中逐出。
如果您担心内存使用情况,请使用[TransformStream API](https://developers.cloudflare.com/workers/reference/apis/streams/)来传输响应。这样可以避免将整个响应加载到内存中。
## 子要求
### 工作者脚本可以发出子请求以加载Internet上的其他站点吗?
是。使用[Fetch API](https://developers.cloudflare.com/workers/reference/apis/fetch/)向其他Internet资源发出任意请求。
### 我可以进行几个子请求?
工作者脚本可以进行的子请求限制为每个请求50个。重定向链中的每个子请求均计入此限制。这意味着,Workers脚本发出的子请求数可能大于`fetch(request)`脚本中的调用数。
### 我的工作人员响应用户后,我可以提出子请求吗?
是的,您可以[`event.waitUntil()`](https://developers.cloudflare.com/workers/reference/apis/fetch-event)用来注册异步任务,这些异步任务在返回响应后可能会继续。
### 子请求需要多长时间?
工人可以使用的实时量没有硬性限制。只要发送请求的客户端保持连接状态,Worker就可以继续代表该请求进行处理,发出子请求并设置超时。
当客户端断开连接时,与该客户端请求关联的所有任务都会被主动取消。如果工作人员将承诺传递给[`event.waitUntil()`](https://developers.cloudflare.com/workers/reference/apis/fetch-event),则取消将延迟到承诺完成或直到另外30秒为止,以先到者为准。
## 同时打开连接
在处理请求时,每个Worker脚本最多可以同时打开六个连接。以下API调用打开的连接均计入此限制:
* [Fetch API](https://developers.cloudflare.com/workers/reference/apis/fetch/)的`fetch()`方法[](https://developers.cloudflare.com/workers/reference/apis/fetch/)
* `get()`,`put()`,`list()`,和`delete()`方法的[工人KV命名空间对象](https://developers.cloudflare.com/workers/reference/apis/kv)
* `put()`、、`match()`和[Cache对象的](https://developers.cloudflare.com/workers/reference/apis/cache/)`delete()`方法[](https://developers.cloudflare.com/workers/reference/apis/cache/)
工作者打开六个连接后,仍然可以尝试打开其他连接。但是,这些尝试将放入待处理的队列中-在当前打开的连接之一关闭之前,不会真正启动连接。由于较早的连接可能会延迟较晚的连接,因此如果Worker尝试进行多个同时的子请求,则其较晚的子请求似乎需要更长的时间才能开始。
如果系统检测到Worker在打开的连接上处于死锁状态-例如,如果Worker正在进行挂起的连接尝试,但是在正在进行的连接上没有正在进行的读写,则使用最少的打开连接将被取消以解除阻止该工作人员。如果Worker稍后尝试使用已取消的连接,则将引发异常。但是,在实践中很少会出现这些异常,因为对于Worker来说,打开一个没有立即使用的连接并不常见。
# 千伏
订阅无限工人计划后,将启用KV。工人KV支持:
* 每个帐户最多100个命名空间
* 每个名称空间无限制键
* 密钥最多512字节
* 值高达10 MB
* 每个键每秒无限次读取
* 每个键每秒最多写入一次
工人KV的读取性能取决于给定密钥接收的读取量。除非在任何给定的数据中心中每分钟至少读取几次该密钥,否则无法达到密钥的最佳性能。
Workers KV是一个最终一致的系统,这意味着读取有时会反映该系统的较旧状态。尽管写入通常通常会立即在全局上可见,但要保证所有边缘位置的读取都能看到新值,则可能需要60秒的时间。
# 环境变量
一个帐户的最大环境变量数(秘密和文本组合)为32个变量。
每个环境变量的大小限制为1kB。
- 关于本翻译文档
- 快速开始
- 模版库
- 讲解
- Workers页面
- 从0开始
- 从已有页面开始
- 从已有Worder开始
- 工具
- Cli工具 wrangler
- 安装
- 指令
- 配置
- 环境
- Webpack
- 密钥
- KV
- 网站
- Playground
- ServerLess插件
- Terraform
- REST API
- Making Requests
- Scripts
- Bindings
- Routes
- Integrations
- 相关
- 工作原理
- 安全
- 使用缓存
- 价格
- Routes
- Limits
- 提示
- 调试技巧
- 调试header
- FetchEvent生命周期
- 请求上下文
- 请求sign
- 参考
- runtime API
- Web Standards
- fetch
- fetchEvent
- Response
- Request
- KV
- Environment Variables
- Streams
- Encoding
- Web Crypto
- Cache API
- HTMLRewriter
- Workers KV
- Use cases
- Namespaces