You need to enable JavaScript to run this app.
内容分发网络

内容分发网络

复制全文
运行时 API
Web Standards API
复制全文
Web Standards API

本文档介绍边缘函数运行时支持的标准 Web API。

TextEncoder/TextDecoder

TextEncoder 仅支持把 Unicode Codepoint 转换为 UTF-8 编码的字节流。TextDecoder 仅支持把 UTF-8、GB2312、GBK 编码的字节流转换为 Unicode Codepoint。
参见 MDN 文档 TextEncoderTextDecoder

限制

为了防止 Denial of Service (DoS) 风险,每次 decoder 的输入数据不得超过 8MB。
为了防范多字节字符串攻击等潜在风险,运行时可能会对 TextEncoder/TextDecoder 进行限制,例如限制缓冲区大小,以确保文本的正确性和安全性。

setTimeout()/setImmediate()/setInterval()/clearTimeout()/clearImmediate()/clearInterval()

您可以使用这些方法在指定的时间延迟后执行回调函数,或者在指定的时间间隔内重复执行回调函数。

说明

为了防止基于高精度时间戳的侧信道攻击(例如 Spectrum 攻击),这些方法会主动调整时间精度,不支持高精度时钟。
参见以下 MDN 文档:

限制

在每个请求上下文中,setTimeout()setImmediate()setInterval() 的累积调用次数不能超过 1000 次。例如,在一个请求上下文中,setTimeout() 被调用 200 次,setImmediate() 被调用 600 次,则 setInterval() 最多只能被调用 200 次。
你不能把在其他请求上下文中定义的方法作为参数传入 setTimeout()setImmediate()setInterval(),也不能把在其他请求上下文中获取的 timeoutID、immediateID 或 intervalID 传入 clearTimeout()clearImmediate()clearInterval()

session

运行时为每个请求上下文设置的对象,每个请求上下文有一个互相不可见的 session 全局对象。session 包含以下属性:

  • requestId:返回当前请求的唯一 ID,如果没有则为空字符串。
  • event:返回当前上下文的触发事件,即 addEventListener() 中回调函数的 event。
  • context:独立于请求上下文的对象,用于用户访问独立于请求上下文的数据,对运行时透明。

示例

addEventListener('fetch', (event) => {
  event.respondWith(handle(event));
});

async function handle(event) {
  const table = session.context; // 每次请求的context都是不一样的,互相独立

  table.set("my-own-data", session.requestId);
}

atob()/btoa()

参见 MDN 文档 atob()btoa()

URL

参见 MDN 文档 URL
出于安全原因,URL 的每个部分都有内存阈值设置,如果您遇到问题,可以通过创建工单更改配置。

URLSearchParams

参见 MDN 文档 URLSearchParams

URLPattern

参见 MDN 文档 URLPattern

console

参见 MDN 文档 console
console 在每个请求上下文中被分配的存储容量默认为 1 KB,超过 1KB 的数据会被截断。该限制在调试环境下不生效。

运行时支持的实例方法

console 支持以下方法:

  • info()
  • log()
  • error()
  • warn()
  • trace()
  • assert()
  • alert()

self

一个指向当前运行时全局变量的只读变量。

示例

例如,如果您调用 console.log() 打印 self

console.log(self)

您会得到当前运行时范围内的所有对象:

Object {atob: "#function", btoa: "#function", setTimeout: "#function", setInterval: "#function", setImmediate: "#function", …}
AbortController: "#function"
AbortSignal: "#function"
Blob: "#function"
Body: "#function"
CompressionStream: "#function"
CronEvent: "#function"
CryptoKey: "#function"
CryptoKeyPair: "#function"
DOMException: "#function"
DecompressionStream: "#function"
Event: "#function"
EventTarget: "#function"
ExtendableEvent: "#function"
FetchEvent: "#function"
File: "#function"
FormData: "#function"
Headers: "#function"
HtmlComment: "#function"
HtmlDocend: "#function"
HtmlDoctype: "#function"
HtmlElement: "#function"
HtmlEndElement: "#function"
HtmlText: "#function"
InternalErrorEvent: "#function"
InternalEvent: "#function"
...

isSparrow

一个 Boolean 全局变量,表示当前运行环境是否边缘函数的运行时。您可以使用它来确定代码是否在边缘函数运行时中运行。

  • true:当前运行环境是边缘函数的运行时。
  • false:当前运行环境不是边缘函数的运行时。

structuredClone()

参见 MDN 文档 structuredClone()

queueMicrotask()

参见 MDN 文档 queueMicrotask()

参见 MDN 文档 Navigator.userAgent

DOMException

参见 MDN 文档 DOMException

Event

参见 MDN 文档 Event

限制

EventTarget

参见 MDN 文档 EventTarget

限制

EventTarget.addEventListener()options 参数中的 passivecapture 默认被设置为 false 且无法更改。
EventTarget.removeEventListener()options 参数中的 capture 默认被设置为 false 且无法更改。

AbortSignal

参见 MDN 文档 AbortSignal

AbortController

参见 MDN 文档 AbortController

URL

参见 MDN 文档 URL

最近更新时间:2026.01.30 12:04:19
这个页面对您有帮助吗?
有用
有用
无用
无用