这些模板是由 Forward 策略调用的 Worker 的起点。你可以改编它们,或使用 GatewayMiddleware.handle(request, context, next) 入口点编写自己的 Worker。每个脚本实现一项任务。
| 模板 | 作用 |
|---|---|
| 发送 Slack 通知 | 在所选请求完成时发送后台通知。 |
| 捕获截图 | 在独立浏览器中捕获公共页面并将图像保存到 R2。 |
| 捕获下载的文件 | 将附件的有界副本保存到 R2,同时将下载返回给用户。 |
| 为 HTML 页面添加水印 | 向 HTML 响应添加可见的用户标签。 |
| 将标头和正文存储为 JSON | 在 R2 中归档所选标头以及有界的 JSON 请求和响应正文。 |
| 显示辅导页 | 返回说明页,而不联系原始目标。 |
| 脱敏 JSON 字段 | 在将应用程序请求发送到上游之前替换其中的特定字段。 |
遵循设置 Forward,用模板替换直通脚本,并配置其绑定。在 Forward 策略中选择 Worker 之前先部署它。每个模板都会列出测试以及它期望的流量范围。
gateway-workers skill ↗ 为编码代理提供关于具名入口点、Gateway 上下文和验证的指导。
每个 TypeScript 模板都包含来自 @cloudflare/zt-types ↗ 的 GatewayMiddlewareContext 和 GatewayMiddlewareNext 的 import type 声明。在使用模板之前,请将此软件包作为开发依赖项安装到 Worker 项目中。每个模板都包含安装命令。
该软件包提供 Gateway 类型。继续从 cloudflare:workers 导入运行时 WorkerEntrypoint 类。import type 声明会在 TypeScript 编译时被移除。JavaScript 版本会省略它们和类型注解,因此不需要 @cloudflare/zt-types。
从测试主机和测试用户组开始。页面加载会产生多个 HTTP 请求,因此请将通知和截图限定到特定方法和路径,而不是发往某个域的每个请求。保持捕获存储桶为私有,并为保留配置 R2 生命周期规则。仅捕获组织允许你存储的数据。
后台示例使用 this.ctx.waitUntil()。它们返回用户的响应,而不等待后台操作。后台失败会被记录,并且不会更改返回的响应。后台工作有有限的执行时间。当你需要持久处理时,请使用 Queues 或 Workflows。
正文捕获使用克隆的流。缓慢的捕获消费者可能导致克隆在另一个消费者前进时缓冲数据。示例限制了捕获的字节数,但克隆并不能保证恒定内存使用或对流量零影响。请保持捕获策略范围较窄,并测试有代表性的正文大小和传输速度。