Edgeweir
使用指南

源站与缓存

网站的源站池与源站组、健康检查与会话保持、回源连接与请求体上限、缓存规则、缓存键、PURGE 方法、X-Cache 与字符编码、集群的缓存区,以及刷新与预热。

概念

术语定义
源站池一个网站的全部源站,以及负载均衡、健康检查、超时和长连接设置。每个网站一个源站池。
主源 / 备用源未打开「备用」的源站为主源,按负载均衡策略接收流量;备用源只在全部主源不可用时接收流量。
源站组源站上的分组标签,空为默认组。请求默认只发往默认组;「源站覆盖」规则可把请求发往其他组。
缓存规则按列表顺序匹配的规则,决定响应是否缓存及缓存多久。
缓存键区分缓存对象的请求属性组合,对网站的全部缓存规则生效。
缓存代数网站级计数器,属于缓存键的一部分。旧版控制台的「清除缓存」会使其加一;现在整站清除是节点任务,计数器不再变化。
缓存标签源站在响应头 Cache-Tag 中给出的标签;按标签刷新只刷新带该标签的缓存对象。
缓存区节点存放缓存对象的磁盘目录与其索引。每个集群一个设置,节点可单独覆盖容量。

配置源站

  1. 打开 网站,选择网站,进入「源站」页签。

  2. 在「源站」卡片中修改已有源站,或点击「添加源站」。

  3. 填写「源站地址」「端口」「回源协议」「权重」;按需填写「回源 Host」「SNI」「源站组」,按需打开「备用」「S3 签名」。

  4. 点击卡片底部的「保存」。控制台提示「已保存,版本 #N」。

  5. 验证:节点应用该版本后,经节点访问网站:

    curl -sI -H 'Host: www.example.com' http://<节点 IP>/

    返回源站的状态码;有流量后,源站旁显示「正常」。

源站字段

字段取值默认值作用
源站地址主机名或 IPv4/IPv6 字面量,不含端口和方括号,最长 253 字符无回源目标,受源站地址限制约束
端口1–65535HTTP 80,HTTPS 443回源端口;切换协议时,80 与 443 随之互换
回源协议HTTP / HTTPSHTTP节点到源站的协议
权重1–1001三种负载均衡策略共用的权重
回源 Host主机名或 IP,可带端口;IPv6 带端口时写成 [2001:db8::1]:8443,不带端口时不加方括号;最长 259 字节空(跟随请求)发往源站的 Host。空:访问者请求的 Host(小写、去端口);S3 源站为源站地址,端口不是 80(HTTP)或 443(HTTPS)时带端口
SNI主机名空(跟随回源 Host)仅 HTTPS。空:回源 Host(去端口),再为空时用源站地址;源站地址为 IP 字面量时不发送 SNI
源站组1–32 个小写字母、数字、_ 或 -空(默认组)见源站组
备用开 / 关关设为备用源
S3 签名开 / 关关用 AWS Signature V4 签名回源请求,见 S3 兼容对象存储

每个网站 1–32 个源站,至少一个在默认组。

源站池设置

「源站池设置」卡片单独保存,其中还有主动健康检查与会话保持。

字段取值默认值作用
负载均衡加权随机 / 轮询 / 一致性哈希加权随机主源之间的选择策略
校验源站证书开 / 关开校验 HTTPS 源站证书,见回源 TLS
WebSocket开 / 关开透传 WebSocket 升级请求
回源 HTTP 版本HTTP/1.1 / HTTP/2HTTP/1.1节点请求源站用的 HTTP 版本,见 HTTP/2 与 gRPC
gRPC开 / 关关以 HTTP/2 端到端转发 gRPC 请求;「回源 HTTP 版本」为 HTTP/2 时才能打开
失败次数1–1003连续失败达到该值后标记源站不可用
恢复时间(秒)1–360030标记不可用后多久再次尝试
回源重试:尝试次数1–53每个请求最多尝试的源站数,见负载均衡与重试
回源重试:源站返回 502 / 503 / 504 时重试开 / 关开关闭后源站的 502/503/504 响应直接返回访问者,连接失败与超时仍重试
超时(秒):连接0.1–12010建立连接的超时
超时(秒):发送0.1–360060向源站发送请求的超时
超时(秒):读取0.1–360060读取响应的超时;不作用于已升级的 WebSocket 连接
回源长连接:启用开 / 关开复用到源站的连接
回源长连接:空闲时间(秒)1–360060空闲连接保留时间
回源长连接:最大请求数1–1000001000单个连接处理的最大请求数

配置阶段的规则可按请求覆盖三项超时与「WebSocket」,见覆盖设置。

负载均衡与重试

策略行为
加权随机按权重随机选择;重试按权重顺序选择未尝试过的源站
轮询平滑加权轮询(与 nginx 相同的算法),每个 worker 独立计数
一致性哈希按原始请求 URI(路径加查询)哈希,同一 URI 固定到同一源站;一个源站不可用时只有映射到它的 URI 改选其他源站
项目行为
尝试次数每个请求最多尝试「尝试次数」个源站(默认 3)
触发重试连接失败、超时(含 TLS 握手失败);打开「源站返回 502 / 503 / 504 时重试」时还包括源站返回 502/503/504
不重试POST、LOCK、PATCH 请求发出后不重试;PUT、DELETE 会重试
重试范围只在当前可用的一组源站内:有健康主源时只在健康主源之间;全部主源不可用时使用备用源;不在同一请求内切换 HTTP 与 HTTPS 源站
剔除域名解析失败、解析结果全部为特殊用途地址或缺少 S3 凭据的源站在尝试前剔除,实际尝试次数可能少于「尝试次数」

被动健康检查

不发送探测请求;健康状态只由真实流量判断。打开主动健康检查后两者合并,见合并规则。

项目行为
计为失败连接失败、超时、源站返回 502/503/504(关闭状态码重试时同样计入)、域名解析失败、解析结果全部为特殊用途地址、缺少 S3 凭据、校验证书时节点缺少 CA 文件
清零其他任何响应清零失败计数
标记不可用连续失败达到「失败次数」后,在「恢复时间」内不被选中
恢复恢复时间结束后重新接收流量;一次成功即恢复健康,再失败一次立即重新标记为不可用
失败开放全部源站不可用时仍按主源、备用源的顺序尝试
共享范围同一节点的所有 worker 共享健康状态;各节点独立判断
上报节点随心跳上报(默认每 15 秒);「源站」页签显示「{down}/{total} 个节点不可用」和最后一次错误,每个节点的结果标出来源「被动」或「主动」
错误码界面显示
connect_failed无法连接源站
timeout源站响应超时
upstream_status源站返回 HTTP {status}(被动检查:仅源站自身返回 502/503/504;主动检查:不在期望范围内的状态码)
dns_failed无法解析 {host}
address_forbidden{address} 是特殊用途地址,不在源站地址允许清单内
tls_failedTLS 握手或证书校验失败

错误码需要节点 proto v0.2.1 及以上;其他错误和更早的节点显示节点上报的原文。

主动健康检查

  1. 在「源站」页签的「源站池设置」卡片中,打开「主动健康检查」的「启用」。
  2. 填写「路径」,选择「方法」,按需修改其他字段。
  3. 点击卡片底部的「保存」。
  4. 验证:令一个源站的检查路径返回期望范围以外的状态码;约「间隔 × 不健康阈值」秒后,该源站显示「{down}/{total} 个节点不可用」,节点结果标为「主动」,请求不再发往它。
字段取值默认值作用
启用开 / 关关关闭时保留填写的值
路径以 / 开头,可带查询,1–1024 个可打印 ASCII 字符,不含空格/探测请求的路径
方法GET / HEADGET探测请求的方法
状态码下限 / 上限100–599,下限不大于上限200 / 399范围内的状态码为成功
Host主机名空(跟随回源 Host)探测请求的 Host;为空时用源站的「回源 Host」,再为空时用源站地址
间隔(秒)5–30030同一源站两次探测的间隔
超时(秒)1–60,不超过间隔5单次探测的时限,超时记为失败
健康阈值1–102连续成功多少次后恢复健康
不健康阈值1–103连续失败多少次后标记不健康
项目行为
执行者每个节点的 agent 分别探测网站的每个源站;探测请求数随节点数增加,间隔不宜过短
地址策略与回源相同:解析结果中特殊用途地址(不在允许清单内)被丢弃,只连接校验过的地址;没有可用地址时记为失败(dns_failed、address_forbidden)
请求协议和端口与源站相同;HTTPS 发送 SNI(源站的 SNI、回源 Host 或地址),「校验源站证书」打开时校验证书;「回源 HTTP 版本」为 HTTP/2 时以 HTTP/2 探测;不跟随跳转;最多读取 64 KiB 响应体
失败连接失败、超时、TLS 失败、状态码不在范围内;错误码与被动检查相同
初始状态健康;节点启动或配置变化后的第一次探测在一个间隔内随机开始
不探测S3 兼容源站(未签名的探测不代表签名请求)、地址字面量被禁止的源站
节点停止探测数据面的「主动不健康」标记在最长间隔的 3 倍(至少 90 秒)后失效,回到只有被动检查
上报不健康或有连续失败的源站随心跳上报,来源「主动」;「源站不可用」告警同时使用两种来源
节点要求节点能力 active-health-v1;集群有活动节点不支持时无法开启(「所在集群有节点不支持,暂时无法开启」)

合并规则

主动检查被动检查结果
未开启任意与没有主动检查时相同
不健康任意不参与选择
健康标记不可用不参与选择,直到被动检查的恢复时间结束
健康可用参与选择

全部源站都不可用时仍按主源、备用源的顺序尝试(失败开放)。

会话保持

  1. 在「源站池设置」卡片中打开「会话保持」的「启用」,按需修改「Cookie 有效期(秒)」。
  2. 点击「保存」。
  3. 验证:第一次回源的响应带 Set-Cookie: __ew_affinity=…;带着这个 Cookie 的后续请求都发往同一个源站。
字段取值默认值作用
启用开 / 关关用签名 Cookie 把访问者固定到一个源站
Cookie 有效期(秒)60–6048003600Cookie 的 Max-Age 与签名中的到期时间
项目行为
Cookie__ew_affinity,Path=/; HttpOnly; SameSite=Lax,HTTPS 时加 Secure;值为源站 ID、到期时间与签名
签名HMAC-SHA256,使用集群的挑战密钥(与挑战的通行凭证相同),集群内任一节点都能验证;密钥轮换后上一把仍可验证
签发只在回源的响应上签发(缓存命中不签发);已有有效 Cookie 且剩余有效期超过一半时不重复签发
改选Cookie 指向的源站不可用(主动或被动检查)、已删除,或不在当前接收流量的一层(主源健康时的备用源)时,按负载均衡改选并重新签发;篡改或过期的 Cookie 同样处理
重试被固定的源站本次请求失败时仍按重试规则换源站,响应改为固定到实际应答的源站
节点要求节点能力 session-affinity-v1 与 challenge-v1;集群有活动节点不支持时无法开启

回源 TLS

项目行为
证书校验「校验源站证书」打开时,节点用 CA 文件校验 HTTPS 源站证书,证书须覆盖本次尝试的 SNI;重试换源站时按新源站的 SNI 校验
CA 文件默认使用第一个存在的文件:/etc/ssl/certs/ca-certificates.crt、/etc/pki/tls/certs/ca-bundle.crt、/etc/ssl/ca-bundle.pem、/etc/ssl/cert.pem;节点可用 --trusted-ca <绝对路径> 指定
IP 源站按 IP 配置的 HTTPS 源站须填写证书覆盖的「SNI」或「回源 Host」
关闭校验只影响该网站;不校验的 HTTPS 连接不进入连接池
连接池按源站 IP、端口和 SNI 区分;校验过的连接不会被需要校验其他名称的请求复用

WebSocket

WebSocket 升级请求(Upgrade: websocket)默认透传,不经过缓存。关闭「WebSocket」后,升级请求返回 403,响应头 X-Edgeweir-Error: websocket-disabled。

升级后的连接空闲 3600 秒后关闭,网站的「发送」「读取」超时不作用于它;只有配置阶段规则的「回源发送超时」「回源读取超时」能改变它,见覆盖设置。

HTTP/2 与 gRPC

  1. 在「源站」页签的「源站池设置」卡片中,把「回源 HTTP 版本」改为「HTTP/2」;需要转发 gRPC 时再打开「gRPC」。

  2. 点击卡片底部的「保存」。

  3. 验证:节点应用该版本后,源站访问日志里的请求为 HTTP/2。gRPC 网站可经节点调用,例如:

    grpcurl -authority grpc.example.com <节点 IP>:443 list
项目行为
协商HTTPS 源站经 TLS ALPN 协商 h2;HTTP 源站以 HTTP/2 直连(prior knowledge,h2c)。源站不支持 HTTP/2 时回源失败,不回退到 HTTP/1.1
回源 Host以 host 请求头发送,不发送 :authority
缓存与规则与 HTTP/1.1 相同:边缘缓存、回源规则、超时与重试照常生效
WebSocket升级请求仍以 HTTP/1.1 回源;只支持 HTTP/2 的源站不能使用 WebSocket
连接池HTTP/1.1、HTTP/2 与 gRPC 的回源连接各自复用,互不混用
主动健康检查以 HTTP/2 探测;HTTPS 源站协商不出 h2 时记为失败。gRPC 服务常对普通请求返回 415,可改用源站的 HTTP 检查路径,或把 415 放进期望状态码范围
节点要求节点能力 origin-http2-v1;集群有活动节点不支持时无法开启(「所在集群有节点不支持,暂时无法开启」)

打开「gRPC」后,Content-Type 为 application/grpc 的请求(含 +proto、+json 等后缀或参数)经 HTTP/2 端到端转发:

项目行为
客户端连接gRPC 客户端须以 HTTP/2 连接节点:HTTPS 端口对该网站的域名启用 HTTP/2(「HTTPS」页签关闭 HTTP/2 时也是);集群有网站打开 gRPC 时,HTTP 端口也接受 h2c,未打开 gRPC 的网站的域名对 h2c 请求返回 421
流式请求与响应双向逐帧转发,trailers(grpc-status、grpc-message)原样传回;客户端流与双向流可用
缓存与压缩不缓存,节点不压缩
请求体不限大小
OWASP CRS不检查 gRPC 请求(卡片显示「gRPC 请求不经过 OWASP CRS」):ModSecurity 读完整个请求体后才转发,流式调用无法完成。Content-Type 由客户端决定,网站的其他接口也能以该类型绕过 CRS;源站的 gRPC 接口与其他接口不分开时,把 gRPC 放到单独的网站
规则与防护封禁、规则与限速照常生效;gRPC 客户端无法完成人机验证,需要时用「允许」规则豁免 gRPC 路径
超时「读取」超时是两次收到数据之间的上限;长时间没有消息的流需调大「读取」超时(最多 3600 秒),或用配置规则按路径覆盖
gRPC-Webapplication/grpc-web 不属于 gRPC 请求,按普通 HTTP 请求处理

源站组

源站的「源站组」把网站的源站分成几组,留空为默认组。没有命中「源站覆盖」规则的请求只发往默认组。

  1. 在「源站」卡片中为源站填写「源站组」,例如 api,点击「保存」。至少保留一个源站在默认组,否则卡片显示「至少保留一个默认组源站」,不能保存。
  2. 在「规则」页签的「回源」阶段点击「添加规则」,填写表达式,例如 starts_with(http.request.uri.path, "/api/");「动作」选择「源站覆盖」,「源站组」选择 api,按需填写「回源 Host」「SNI」「端口」,打开「启用」(新规则默认停用),点击「保存」。字段见动作字段。
  3. 验证:请求 /api/ 下的路径,源站日志显示请求到达 api 组的源站;其他路径仍到达默认组。
项目行为
组内选择负载均衡、主源与备用源、重试、健康检查与会话保持都只在选中的组内进行;轮询状态与一致性哈希按组计算
覆盖规则的「端口」作用于组内每个源站;「回源 Host」「SNI」替换源站自己的设置,「回源 Host」不影响 S3 源站;SNI 为空时照常跟随回源 Host
缓存键不含源站组。按缓存键以外的条件(例如请求头)选择组时,不同组的响应共用缓存对象
引用检查规则只能选择网站已有的组;移除仍被规则选择的组时,保存提示「规则无效」
全局规则全局规则的「源站覆盖」不能选择源站组,只覆盖回源 Host、SNI 与端口
节点要求rules-v2;集群有活动节点不支持时,「源站」卡片显示「所在集群有节点不支持,暂时无法开启」,不能再把源站移出默认组,已有的源站组仍可修改或清空

请求体上限

网站「源站」页签的「请求体上限」卡片单独保存。

字段取值默认值作用
上限(MiB)0–10240,可带小数100请求体按 Content-Length 超过上限时返回 413;0 不限制
项目行为
判断依据只看 Content-Length,在规则之后判断;413 带 X-Edgeweir-Error: body-too-large,页面按 413 → 「其他 4xx」→ 内置页查找,见错误页
分块上传不带 Content-Length 的分块请求不按网站上限判断,只受节点全局上限约束:集群内所有已启用网站与规则上限的最大值(任一为 0 时不限)
按请求覆盖配置阶段规则的「请求体上限(MiB)」覆盖网站上限,见覆盖设置
gRPC不检查
节点要求不是 100 MiB 时需要节点能力 site-content-v1

源站地址限制

源站不能指向特殊用途地址。

类别地址段
IPv40.0.0.0/8、10.0.0.0/8、100.64.0.0/10、127.0.0.0/8、169.254.0.0/16、172.16.0.0/12、192.0.0.0/24、192.0.2.0/24、192.168.0.0/16、198.18.0.0/15、198.51.100.0/24、203.0.113.0/24、224.0.0.0/4、240.0.0.0/4
IPv6::/128、::1/128、100::/64、2001:db8::/32、fc00::/7、fe80::/10、ff00::/8;IPv4 映射地址(::ffff:0:0/96)和 NAT64 地址(64:ff9b::/96)按内嵌的 IPv4 地址判断
主机名localhost 和 *.localhost 始终拒绝;127.1、2130706433、0x7f000001 这类最后一段为数字的名称不是合法地址
检查点行为
控制台保存IP 字面量落在上述地址段时拒绝保存(ORIGIN_ADDRESS_FORBIDDEN)
节点回源对配置中的地址和每次 DNS 解析结果执行同一清单;解析结果中的特殊用途地址被丢弃,全部被丢弃时记为回源失败(address_forbidden)
允许清单在 系统设置 → 源站地址允许清单 放行地址段,保存后向所有集群发布,见源站地址允许清单;localhost 不能放行
回环检测节点向源站发送 CDN-Loop(RFC 8586);收到带本节点标识的请求时返回 508(X-Edgeweir-Error: loop-detected)

S3 兼容对象存储

在源站上打开「S3 签名」后填写以下字段。「预设」按服务商填入源站地址模板与区域示例,把地址中 <region> 这类尖括号部分换成自己的值;预设只填表单,不保存。

字段取值默认值作用
区域字母、数字、-,最长 64 字符无SigV4 签名区域,例如 us-east-1
Bucket3–63 字符的 bucket 名空填写后使用路径式地址 /<bucket>/<key>;源站地址已包含 bucket 时(如 assets.s3.us-east-1.amazonaws.com)留空
Access Key ID最长 128 字符无访问密钥 ID
Secret Key最长 256 字符无只写;保存后显示「已保存,留空不修改」,更换 Access Key ID 时必须重新填写
项目行为
签名AWS Signature V4,载荷不签名(UNSIGNED-PAYLOAD);删除访问者请求中的 x-amz-* 头
方法只转发 GET 和 HEAD;没有其他非 S3 源站可接收时,其他方法返回 405(Allow: GET, HEAD)
查询字符串访问者的查询字符串不转发给对象存储
密钥存储Secret Key 用主密钥信封加密入库,只经节点通道(mTLS)下发;节点保存在状态目录的 credentials.json(0600),用于控制台不可达时重启
预设源站地址区域示例Bucket
AWS S3s3.<region>.amazonaws.comus-east-1填写(路径式)
Cloudflare R2<account_id>.r2.cloudflarestorage.comauto填写
Backblaze B2s3.<region>.backblazeb2.comus-west-004填写
MinIO<host>,保留当前协议与端口us-east-1填写
阿里云 OSS<bucket>.s3.oss-<region>.aliyuncs.comcn-hangzhou留空(地址含 bucket)
腾讯云 COS<bucket>-<appid>.cos.<region>.myqcloud.comap-guangzhou留空(地址含 bucket)
百度智能云 BOSs3.<region>.bcebos.combj填写
七牛云 Kodos3.<region>.qiniucs.comcn-east-1填写

除 MinIO 外,选择预设时协议改为 HTTPS、端口改为 443。只列出官方文档写明支持 S3 兼容 AWS Signature V4 的服务;华为云 OBS 的文档只描述其自有签名,不在列表中,仍可按「自定义」填写。

配置缓存规则

  1. 打开 网站,选择网站,进入「缓存」页签。

  2. 在「缓存规则」卡片中点击「添加规则」。

  3. 在「构建器」中填写「路径前缀」「后缀」;或切换到「高级」,在「表达式」中填写条件,见请求条件。

  4. 选择「动作」,填写「缓存时间(秒)」,按需填写「浏览器 TTL(秒)」;只对静态资源关闭「遵循源站」。

  5. 需要更多条件时点击「更多条件」,填写「精确路径」(仅构建器)「状态码」「最小(KB)」「最大(KB)」「过期后后台更新(秒)」「回源出错时用旧缓存(秒)」,或打开「缓存带 Authorization 头的请求」。

  6. 拖动规则左侧的手柄调整顺序。

  7. 点击「保存」。

  8. 验证:同一 URL 请求两次,第二次命中缓存:

    curl -sI -H 'Host: www.example.com' http://<节点 IP>/static/app.js | grep -i x-cache

    第二次输出 X-Cache: HIT。

规则字段

字段取值默认值作用
条件类型构建器 / 高级构建器见请求条件
路径前缀以 / 开头,逗号分隔,最多 32 个/构建器:请求路径以其中之一开头
后缀1–16 位小写字母或数字,逗号分隔,最多 64 个空构建器:请求路径的扩展名为其中之一,例如 css, js, png
表达式cache 阶段的条件表达式,最长 16384 字符无高级:请求条件
动作缓存 / 不缓存缓存匹配后缓存或绕过缓存
缓存时间(秒)0–315360003600规则的缓存时间
浏览器 TTL(秒)0–31536000空(跟随源站)见浏览器 TTL;「不缓存」规则不可用
遵循源站开 / 关开开:遵循源站 Cache-Control / Expires;关:覆盖源站缓存头
精确路径以 / 开头,最多 32 个空构建器:请求路径等于其中之一
状态码100–599,最多 16 个空空:只缓存默认可缓存的状态码
最小(KB)/ 最大(KB)不小于 0;最大不小于最小空(不限)响应大小范围
过期后后台更新(秒)0–2592000空(关闭)stale-while-revalidate
回源出错时用旧缓存(秒)0–2592000空(关闭)stale-if-error
缓存带 Authorization 头的请求开 / 关关允许缓存带 Authorization 的请求
缓存带 Set-Cookie 的响应开 / 关关允许缓存带 Set-Cookie 的响应,见 Set-Cookie

每个网站最多 64 条规则。没有规则时卡片显示「不缓存」,网站不缓存任何响应。

匹配

项目行为
顺序按列表顺序匹配,第一条适用的规则决定是否缓存、缓存时间和浏览器 TTL;没有适用规则时不缓存
API 中的 priority从小到大匹配,同一网站内不能重复(CACHE_RULE_PRIORITY_DUPLICATE);不填时按列表位置取 10、20、30……
请求条件一条表达式,按客户端原始请求求值:规范化后、规则改写前的路径,与缓存键、刷新一致
响应条件状态码、响应大小。请求条件满足而响应条件不满足时,继续判断后续规则
响应大小按 Content-Length;206 响应按 Content-Range 中的完整大小;大小未知时不满足大小条件

请求条件

请求条件是一条 cache 阶段的表达式,字段、函数与 IP 名单引用同规则表达式,不能使用响应字段、regex_replace 与 wildcard_replace。true 匹配所有请求。

条件类型行为
构建器「路径前缀」「后缀」「精确路径」生成表达式:同一类条件中任一项满足即可,不同类条件都要满足,留空的条件不限制。例如前缀 /static/, /img/ 与后缀 css, js 生成 (starts_with(http.request.uri.path, "/static/") or starts_with(http.request.uri.path, "/img/")) and http.request.uri.path.extension in {"css" "js"}
高级在「表达式」中直接编写,例如 starts_with(http.request.uri.path, "/static/") and not ends_with(http.request.uri.path, ".html")
切换构建器形状的表达式可在两种类型间切换;其他表达式只能在「高级」中编辑
节点构建器形状的条件(包括在「高级」中写成同样形状的表达式)以原来的结构化条件下发,旧节点照常执行;其他表达式需要节点能力 rules-v2
升级升级前保存的缓存规则已改写为等价的构建器表达式,匹配结果不变

浏览器 TTL

「浏览器 TTL(秒)」大于 0 时,由该规则缓存的响应对访问者返回 Cache-Control: max-age=N。

项目行为
生效条件决定该响应的规则(与缓存时间相同)缓存它:覆盖模式且缓存时间大于 0,或遵循模式且源站的 Cache-Control 不含 no-store、no-cache、private
作用访问者收到的 Cache-Control 换成 max-age=N,缓存命中同样如此;边缘缓存的有效期仍按缓存时间
不生效时访问者收到源站原来的 Cache-Control
响应变换响应变换规则仍可修改 Cache-Control
节点要求rules-v2;集群有活动节点不支持时不能新设置(「所在集群有节点不支持规则扩展,暂时无法使用」),已设置的值仍可修改或清除

缓存时间

模式行为
覆盖(「遵循源站」关)使用规则的缓存时间,忽略源站的 Cache-Control、Expires(含 no-store、private);未填状态码时只缓存 200、203、206、300、301、308。只用于不含用户数据的静态资源,否则登录用户的页面会返回给其他访客
遵循(「遵循源站」开)源站给出 Cache-Control 或 Expires 时按源站;两者都没有时使用规则的缓存时间;Cache-Control 未给出有效期时(例如只有 public)不缓存;no-store、private 生效
通用带 Set-Cookie 的响应不缓存,规则打开「缓存带 Set-Cookie 的响应」时除外

Authorization

带 Authorization 的请求默认绕过缓存,响应也不存入缓存(RFC 9111 §3.5),源站返回 public 或规则覆盖源站缓存头时同样如此。规则打开「缓存带 Authorization 头的请求」后按该规则缓存,此时持有任意凭据的访问者共用同一份缓存,只适合与凭据无关的内容。

规则打开「缓存带 Set-Cookie 的响应」后,带 Set-Cookie 的响应按该规则缓存。

项目行为
发给谁只有本次回源的那个响应(X-Cache 为 MISS、EXPIRED、BYPASS)带 Set-Cookie,多行原样还原;HIT、STALE、UPDATING、REVALIDATED 的响应不带任何 Set-Cookie,其他访客收不到别人的 Cookie
缓存对象节点磁盘上的缓存对象保存着回源时的 Set-Cookie(只用于还原给那次请求),刷新或回收后删除
适用内容源站对每个访客返回相同正文、只用 Cookie 标记会话的页面;正文因 Cookie 不同而不同时,把相关 Cookie 加入缓存键
节点要求site-content-v1

过期内容

字段行为
过期后后台更新(秒)对象过期后的该时长内先返回旧内容,同时在后台刷新
回源出错时用旧缓存(秒)对象过期后的该时长内,源站连接失败、超时或返回 5xx 时返回旧内容

两者在缓存时间为 0 时不生效。访问者收到的 Cache-Control 是源站原来的值,源站没有发送时不添加;设置了浏览器 TTL 时除外。

缓存键与分片

「缓存键与分片」卡片单独保存,对网站的全部规则生效。

字段取值默认值作用
查询参数全部参与 / 全部忽略 / 仅指定参数 / 排除指定参数全部参与查询字符串如何进入缓存键
参数参数名,逗号分隔,最多 32 个空「仅指定参数」时保留的参数;「排除指定参数」时去掉的参数,名称可以以 * 结尾匹配前缀(utm_*)
参数排序开 / 关关排序后 ?a=1&b=2 与 ?b=2&a=1 命中同一对象;「全部忽略」时不可用
请求头头名称,逗号分隔,最多 8 个,不能是 Cookie、Host空这些请求头的值不同则分别缓存
CookieCookie 名,逗号分隔,最多 8 个空这些 Cookie 的值不同则分别缓存。名称区分大小写;请求中同名 Cookie 出现多次、以其他大小写或百分号编码出现,或写在逗号之后时,源站可能取到另一个值,这样的请求不缓存
区分移动端与桌面端开 / 关关按 User-Agent 区分移动端(含平板)与桌面端
包含 Host开 / 关开关闭后网站的全部域名共用缓存对象
Range 分片回源开 / 关关可缓存的 GET/HEAD 按 1 MiB 分片回源和缓存,Range 请求只需命中涉及的分片;源站须支持 Range(返回 206)。关闭时 Range 请求先回源完整对象
项目行为
固定组成协议和缓存代数始终在缓存键中;关闭「包含 Host」后 HTTP 与 HTTPS 仍分别缓存
移动端识别User-Agent 匹配 Mobi|Android|iPhone|iPad|iPod|Windows Phone|BlackBerry|Opera Mini|webOS
排除指定参数参数名区分大小写,按原样和百分号解码后各比较一次;* 只能出现在名称末尾。「仅指定参数」中 * 是普通字符。源站仍收到完整的查询字符串;URL 刷新按同样规则比较查询
修改后按旧键缓存的对象不再命中,由缓存区按不活跃时间回收
节点要求「排除指定参数」需要 site-content-v1

PURGE 方法

「缓存」页签的「PURGE 方法」卡片:打开「启用」,在「PURGE 密钥」填写 16–256 个可打印字符(不含空格),或点击「生成」得到 32 字节随机密钥(只在此处显示,保存前复制),然后保存。之后:

curl -X PURGE -H 'X-Purge-Key: <密钥>' -H 'Host: www.example.com' 'http://<节点 IP>/static/app.js?v=2'

返回 202 {"task_id":"…"}:控制台为该 URL 创建一个 URL 刷新任务,下发给网站所在集群的每个节点,刷新预热 中来源显示为节点。

项目行为
密钥只写:保存后显示「已保存,留空不修改」;填写新密钥即轮换。用主密钥信封加密入库,经节点通道下发给 agent,不进入数据面
应答202 任务已创建;403 密钥错误或缺失(purge-key-invalid);400 URL 无效(purge-url-invalid);429 超过速率(purge-rate-limited,带 Retry-After);503 节点 agent 或控制台不可用(purge-unavailable)。应答为 JSON,Cache-Control: no-store
速率每个节点上,每个网站每个客户端网络(IPv4 地址,IPv6 按 /64)每秒 20 次,密钥正确的请求每个网站每秒 20 次(没有密钥的客户端只用完自己的额度);控制台每个网站每分钟 120 个 PURGE 任务
范围刷新请求的 URL(协议、Host、路径与查询),比较规则同 URL 刷新
未启用PURGE 请求照常回源
审计cache.purge,操作者为节点,元数据 method: PURGE
节点要求site-content-v1

X-Cache

「X-Cache」卡片中关闭「向访客发送 X-Cache」后,网站的响应不带 X-Cache(缓存命中也是);缓存行为不变。需要 site-content-v1。

字符编码

「字符编码」卡片为文本响应补上 Content-Type 的 charset 参数,只改响应头,不转换正文。

字段取值默认值作用
编码关闭 / utf-8 / gbk / gb18030 / gb2312 / big5 / iso-8859-1 / shift_jis / euc-kr关闭添加的编码
强制替换开 / 关关源站已给出 charset 时替换它;关闭时保留源站的
大写开 / 关关以大写写出编码名,如 charset=GBK

只作用于源站返回(含缓存命中)的 text/*、application/javascript、application/json、application/xml 响应;节点自己生成的响应(错误页、人机验证页、PURGE 应答)不变。需要 site-content-v1。

缓存区

集群 页面「概览」中的「缓存区」卡片设置集群每个节点的缓存区;节点详情的「缓存」可单独覆盖本节点的容量。

字段取值默认值作用
容量(GiB)1–6553610缓存区磁盘上限,超出时按最久未用回收
不活跃回收(天)1–907对象多久未被访问即回收
节点详情:容量(GiB)1–65536,留空跟随集群空本节点的容量
项目行为
索引内存按容量自动推算:每 160 MiB 容量 1 MiB,最少 16 MiB,最多 512 MiB(10 GiB 为 64 MiB)
生效节点重新加载 nginx,已有连接不中断;索引大小改变时节点从磁盘重新载入缓存索引,缓存文件保留
用量节点每 10 分钟(启动 1 分钟后第一次,节点参数 --cache-usage-interval)统计缓存目录的磁盘占用,随心跳上报;节点详情显示「已用 … / …」和测量时间,尚未上报时显示「尚未上报」
审计cluster.cache_update、node.cache_update
节点要求集群设置不需要新能力;节点单独的容量与用量上报需要 cache-zone-v1

刷新与预热

  1. 打开 刷新预热。
  2. 选择「URL 刷新」「目录刷新」「Host 刷新」「标签刷新」「全站刷新」「URL 预热」或「站点地图预热」。
  3. URL 类任务:每行填写一个 URL;Host 刷新:每行一个 Host;标签刷新:选择网站,每行(或用逗号分隔)一个标签;全站刷新:勾选网站;站点地图预热:填写「站点地图 URL」与「最多 URL 数」。预热类任务按需勾选「设备」中的「桌面端」「移动端」。
  4. 点击「提交」。
  5. 验证:任务出现在「任务」列表,展开后各节点状态为「成功」;刷新后下一次请求返回 X-Cache: MISS。

任务下发到网站所在集群的每个已启用节点,逐节点显示结果。已停用的网站不能刷新或预热(「网站已停用」)。/purge?site=<网站 ID> 只列出该网站的任务(「任务」旁显示网站名,点击 × 清除),并在全站刷新与标签刷新中预选该网站;/purge?type=<类型>&urls=<URL> 打开该类型并填好 URL(多个 URL 用 JSON 数组,如 urls=["https://www.example.com/a","https://www.example.com/b"])。内容为空或只有空白行时「提交」不可用。⌘K / Ctrl+K 的「刷新 URL…」打开本页(在网站页面时只列出该网站的任务)。

访问日志、网站「统计」页签的热门 URL 与「安全」页签的 Top 路径,在行右侧的「⋯」中提供「刷新 URL」:路径展开到网站的每个非泛域名,确认列出的 URL 后创建 URL 刷新任务,提示中的「查看任务」打开该网站的任务。

在网站内刷新

网站「缓存」页签顶部的「刷新缓存」卡片:

  1. 选择「URL 刷新」「目录刷新」或「全站刷新」。
  2. URL 与目录刷新:每行填写一个以 / 开头的路径或完整 URL。路径展开到网站的每个非泛域名(例如 /app.js 对 www.example.com 与 example.com 各一条),右上角显示展开后的 URL 数;超过 500 条或有既不是路径也不是 URL 的行时在下方提示,「提交」不可用。网站只有泛域名时填写完整 URL。全站刷新显示将要刷新的域名。
  3. 点击「提交」。

卡片下方列出该网站最近 5 个任务,节点执行期间每 2 秒刷新;「查看任务」打开 /purge?site=<网站 ID>。

任务类型

类型输入行为
URL 刷新完整 URL,可带查询刷新该 URL 的设备、请求头、Cookie 和分片变体。查询和 Host 按网站的缓存键规则比较,只刷新查询规范化后相同的对象;查询按百分号解码后比较(?q=%3Cb%3E 与 ?q=<b> 相同)。路径按节点规范化后的形式比较(解码百分号编码、合并连续斜杠、处理 . 和 ..),/%73tatic/a.js 与 /static/a.js 相同
目录刷新不带查询的 URL 前缀刷新该 Host 下路径以该前缀开头的全部对象;前缀按同样规则规范化后按字符串前缀比较;「包含 Host」关闭时不比较 Host
Host 刷新Host 名,不带端口,不能是泛域名刷新该 Host 的全部对象,等同于该 Host 的 / 目录刷新;「包含 Host」关闭的网站刷新全部域名共用的对象
标签刷新一个或多个网站与最多 500 个缓存标签刷新这些网站中响应带有任一标签的对象,见 Cache-Tag
全站刷新网站刷新网站的全部缓存
URL 预热完整 http:// 或 https:// URL;设备节点经本机专用的本地边缘监听像普通请求一样取回并缓存,按浏览器的 Accept-Encoding 请求;封禁、CC、挑战与拒绝类规则不作用于预热,预热也不计入统计。状态码小于 400 为成功;源站的跳转原样缓存、不跟随。缓存键含协议、不含端口(同一网站各监听端口共用缓存对象,带端口的刷新与预热 URL 按网站处理,端口不影响结果):有证书的网站,http:// URL 同时预热 https:// 形式;节点自身因「强制 HTTPS」返回的跳转改为预热 https:// 形式,节点自身的其他跳转记为失败。网站开启「区分移动端与桌面端」时,勾选的每种设备各请求一次(移动端使用移动端 User-Agent),否则只请求一次
站点地图预热一个站点地图 URL、最多 URL 数(1–10000,默认 1000);设备节点经本机边缘层取回站点地图(因此遵守源站地址策略,控制台不对外请求),预热其中本网站的 URL,见站点地图

URL 必须以 http:// 或 https:// 开头,不能包含账号,Host 必须是某个网站的域名(含泛域名下的子域名),不能是 *.example.com 这样的模式。https:// URL 在节点有 HTTPS 监听时经本地 TLS 监听预热(不校验本机证书);没有 HTTPS 监听时失败(「节点还没有 HTTPS 监听」)。节点另有刷新专用的拉取通道:刷新不等前面已经开始的预热或升级。

Cache-Tag

源站在响应头 Cache-Tag 中用逗号分隔列出标签,例如 Cache-Tag: product-42, category-7。

项目行为
解析去掉首尾空格与制表符后按小写比较;只接受可打印 ASCII(不含逗号);单个标签最长 128 字节,整个响应头最长 4096 字节(多行时合并),超出的标签丢弃,响应照常缓存
转发默认不转发给访问者(缓存命中也是);在网站「缓存」页签的「Cache-Tag」卡片打开「向客户端转发 Cache-Tag」后原样转发
刷新结果任务成功后,每个节点都不再返回带有已刷新标签的对象,包括过期后作为旧内容(stale)返回;分片缓存的对象全部分片一起刷新
索引节点为用过 Cache-Tag 的网站记录每个缓存对象的标签,存放在共享内存(节点参数 --tag-dict-mb,默认 64 MiB),按最久未用淘汰
额外回源索引中没有记录的对象(被淘汰、nginx 重启后、网站第一次返回 Cache-Tag 之前缓存的对象)在网站有标签刷新记录期间回源一次,之后正常命中
标签数量每个任务最多 500 个标签;节点为每个网站保留最多 5000 个标签刷新记录(节点参数 --purge-tags-per-site),超出时合并为一次全站刷新
节点要求节点能力 purge-tag-v1;集群有活动节点不支持时,Host 刷新与标签刷新被拒绝(NODE_CAPABILITY_REQUIRED)

站点地图

项目行为
站点地图 URL必须属于一个网站;节点从本机边缘层请求它,不跟随跳转,单个文档 30 秒、解压后最多 50 MiB,gzip 压缩的站点地图按内容识别
格式urlset 的 <loc>;sitemapindex 只展开一层,子站点地图也必须在该网站的域名上
筛选只保留该网站域名(含泛域名)下的 http(s) URL,去重后按文档顺序截取前「最多 URL 数」个
结果每个 URL 的每种设备计一次成功或失败;站点地图取不到或无法解析时失败(sitemap_failed),没有本网站的 URL 时失败(sitemap_empty)
节点要求节点能力 prefetch-v2(移动端预热同样需要);集群有活动节点不支持时任务被拒绝(NODE_CAPABILITY_REQUIRED)

清除网站缓存

在网站「概览」页签点击「清除缓存」并确认(或按 ⌘K / Ctrl+K 搜索网站,选择「清除缓存:(网站)」),与 刷新预热 的「全站刷新」相同:控制台创建一个全站刷新任务,下发到网站所在集群的每个已启用节点,不发布配置版本。提示中的「查看任务」打开 /purge?site=<网站 ID>,只列出该网站的任务,表单中预选该网站。已停用的网站不能清除缓存。

任务限制

项目限制
每个任务最多 500 条 URL、500 个 Host 或 500 个标签,或 100 个网站;每条 URL 最长 2048 字符;站点地图预热每个任务一个站点地图
节点刷新标记每个网站最多保留 1000 条 URL、目录和 Host 刷新标记(节点参数 --purge-markers-per-site)与 5000 条标签刷新标记(--purge-tags-per-site),超出时合并为一次全站刷新
执行顺序节点先执行一批任务中的刷新,再执行预热
预热时间一批任务(最多 10 个)共享 4 分钟预算(节点参数 --prefetch-budget),从节点拉取任务起计时;单个 URL 60 秒;并发 4;到时未完成的 URL 记为失败(prefetch_timeout)
磁盘文件刷新不删除磁盘文件:下一次请求使用新的缓存键回源,旧对象按缓存区的不活跃时间和容量上限回收

节点状态

状态含义
等待中节点尚未取走任务;节点离线时保持此状态
执行中节点已取走任务;5 分钟内未回报结果时重新下发
成功 / 失败节点回报的结果
已跳过节点已停用,任务未下发(node_disabled),不计入进度;停用节点时其未完成的任务同样记为已跳过
情况行为
7 天未执行记为失败(「节点 7 天内没有执行」,task_expired)
补发整站刷新离线超过 7 天后重连、或停用后重新启用的节点,不再执行错过的刷新,改为对涉及的每个网站执行一次全站刷新:合并为一个任务,来源显示「系统(补发整站刷新)」,只发给该节点;已删除的网站不在其中。原任务在该节点下标记「节点重新连接时已补发整站刷新」
预热错过的预热不补发
保留任务保留 90 天;节点仍需补发整站刷新的刷新任务保留到补发之后

限制

项目说明
数量每个网站 1–50 个域名、1–32 个源站、最多 64 条缓存规则
缓存规则条件最长 16384 字符;不能读取响应字段
源站组缓存键不含源站组
缓存区每个节点一个缓存区;容量与不活跃时间按集群设置,节点只能覆盖容量
最大压缩长度只对长度已知的响应生效;分块(长度未知)的响应照常压缩
HTTPS 预热需要节点有 HTTPS 监听,即集群里至少有一个网站配置了证书;缓存键包含协议,http:// 预热只填充 HTTP 访问的缓存
设备变体只区分桌面端与移动端(平板按移动端处理)
Authorization 开关需要节点 proto v0.2.1 及以上;更早的节点忽略「缓存带 Authorization 头的请求」
WebSocket只识别 Upgrade: websocket
HTTP/2 回源不回退到 HTTP/1.1;不发送 :authority
gRPC主动健康检查不支持 gRPC 健康检查协议(grpc.health.v1),只发送 HTTP 请求

故障排查

节点自身返回的错误带响应头 X-Edgeweir-Error 和 Cache-Control: no-store。X-Cache 为 nginx 缓存状态:MISS、HIT、BYPASS、EXPIRED、STALE、UPDATING、REVALIDATED。

现象原因处理
保存提示「源站地址 … 属于特殊用途地址段 …,不在源站地址允许清单中」源站 IP 字面量在特殊用途地址段改用公网地址,或把地址段加入源站地址允许清单
源站显示「… 是特殊用途地址,不在源站地址允许清单内」源站域名的解析结果全部为特殊用途地址同上
HTTPS 源站返回 502,源站显示「TLS 握手或证书校验失败」源站证书自签名、不覆盖 SNI 或证书链不完整;节点缺少 CA 文件换受信任证书或填写正确的「SNI」;自签名源站关闭「校验源站证书」;节点用 --trusted-ca 指定 CA 文件
502,X-Edgeweir-Error: no-origin所有源站都在尝试前被剔除(解析失败、地址被禁止、缺少 S3 凭据)查看「源站」页签的错误信息
404,X-Edgeweir-Error: unknown-hostHost 不属于节点已应用的任何网站,也不是已停用网站的域名:网站或域名已删除,或节点未应用最新版本检查域名与节点「已应用版本」
503,X-Edgeweir-Error: site-disabled网站已停用在网站「概览」页签启用网站
HTTPS 请求在 TLS 握手时失败SNI 不属于节点正在服务的网站(未知域名、已停用的网站),或网站没有证书用 HTTP 请求查看节点的应答;为网站配置证书,见HTTPS 与证书
508,X-Edgeweir-Error: loop-detected源站指回了本节点或其上游 CDN修改源站地址
403,X-Edgeweir-Error: websocket-disabled网站关闭了 WebSocket打开「WebSocket」
「回源 Host」下方提示格式,或保存提示「回源 Host 无效:…」含空格、引号、/、\,带协议或路径,或是不带端口的方括号 IPv6只填主机名或 IP,可带端口
源站显示「回源 Host 无效,节点会跳过该源站」旧版本控制台保存了节点不接受的回源 Host;节点跳过该源站,网站只有这一个源站时不下发修改「回源 Host」后保存
保存提示「gRPC 需要以 HTTP/2 回源」「回源 HTTP 版本」不是 HTTP/2 时打开了 gRPC,或改回 HTTP/1.1 时没有关闭 gRPC先选择 HTTP/2,或同时关闭 gRPC
改为 HTTP/2 后 502,源站显示「TLS 握手或证书校验失败」HTTPS 源站不支持 HTTP/2(ALPN 没有 h2)在源站开启 HTTP/2,或改回 HTTP/1.1
改为 HTTP/2 后 502,源站显示「连接失败」HTTP 源站不接受 h2c同上
回源 HTTP/1.1 时客户端收到无法解析的响应或 502源站只接受 HTTP/2(例如以 h2c 监听的 gRPC 服务)把「回源 HTTP 版本」改为 HTTP/2
gRPC 客户端收到 421客户端以 h2c 访问了未打开 gRPC 的网站的域名在该网站打开「gRPC」,或改用 HTTPS
gRPC 客户端报告缺少 trailers网站没有打开「gRPC」,请求按普通请求回源打开「gRPC」
「节点尚不支持:HTTP/2 与 gRPC 回源(<节点>)」服务账号或后台任务发布的配置用到了 HTTP/2 回源,而集群有活动节点缺少 origin-http2-v1升级节点,见节点升级
405,X-Edgeweir-Error: method-not-allowedS3 源站只接收 GET、HEAD为写请求增加非 S3 源站
带 Authorization 的请求始终 X-Cache: BYPASS默认绕过缓存在对应规则打开「缓存带 Authorization 头的请求」
响应始终 X-Cache: BYPASS没有适用的缓存规则,或适用的都是「不缓存」规则检查规则顺序与条件
响应始终 X-Cache: MISS遵循源站模式下源站未给出有效期;响应带 Set-Cookie 而规则没有打开「缓存带 Set-Cookie 的响应」;缓存时间为 0检查规则和源站响应头
响应没有 X-Cache网站关闭了「向访客发送 X-Cache」在「X-Cache」卡片打开
413,X-Edgeweir-Error: body-too-large请求的 Content-Length 超过网站或规则的请求体上限调高「请求体上限」,或为上传路径加配置规则
PURGE 返回 403,purge-key-invalidX-Purge-Key 缺失或与保存的密钥不同检查密钥;忘记时生成新密钥并保存
PURGE 返回 429,purge-rate-limited同一客户端网络超过每秒 20 次、网站的有效请求超过每秒 20 次,或超过每分钟 120 个任务按 Retry-After 稍后再试;批量刷新用 刷新预热 或 API
PURGE 返回 503,purge-unavailable节点 agent 或控制台不可达检查节点与控制台的连接
PURGE 请求被转发到源站网站没有启用 PURGE 方法在「PURGE 方法」卡片启用
源站的 502 直接返回访问者,没有换源站重试关闭了「源站返回 502 / 503 / 504 时重试」,或「尝试次数」为 1检查「源站池设置」
保存提示「开启 PURGE 方法需要先设置密钥」启用时没有保存过密钥填写或生成密钥后保存
「所在集群有节点不支持,暂时无法开启」集群有活动节点缺少 site-content-v1 或 cache-zone-v1升级节点,见节点升级
「源站」卡片显示「至少保留一个默认组源站」所有源站都填写了「源站组」清空至少一个源站的「源站组」
保存源站或缓存规则提示「规则无效」移除了仍被「源站覆盖」规则选择的源站组;缓存规则条件无效先修改规则,或保留该组的源站;修正条件
「节点尚不支持:规则扩展(<节点>)」服务账号或后台任务发布的配置用到了源站组、高级条件或浏览器 TTL,而集群有活动节点缺少 rules-v2升级节点,见节点升级
选择了不同源站组的请求返回同一个缓存对象缓存键不含源站组按路径选择源站组,或把选择依据加入缓存键
「没有网站使用 …」URL 的 Host 不是任何网站的域名检查域名拼写
「网站已停用」任务或「清除缓存」涉及已停用的网站在网站「概览」页签启用网站后再提交
「URL 无效:…」不是 http(s) URL、包含账号,或目录刷新带查询修正 URL
「Host 无效:…」带端口、泛域名或不是合法主机名每行填写一个主机名
「缓存标签无效:…」标签含逗号、非 ASCII 字符或超过 128 字节修正标签;源站的 Cache-Tag 使用同样的规则
「所在集群有节点不支持…」(NODE_CAPABILITY_REQUIRED)集群有活动节点缺少 purge-tag-v1 或 prefetch-v2升级节点,见节点升级
预热失败,原因「节点还没有 HTTPS 监听」集群里没有配置了证书的网站,节点只有 HTTP 监听改用 http:// URL,或为网站配置证书
「站点地图 … 获取失败(…)」站点地图返回错误状态码或跳转、超时、超过 50 MiB 或不是有效的站点地图直接请求站点地图 URL 检查;跳转时填写最终地址
「站点地图 … 中没有本网站的 URL」站点地图只列出了其他域名的 URL检查站点地图中的域名
标签刷新后仍是旧内容源站没有在该对象的响应中发送对应的 Cache-Tag,或标签含不接受的字符打开「向客户端转发 Cache-Tag」后查看响应头
「预热超时,已完成 …」超过 4 分钟预算拆分为多个任务
「节点不支持此任务类型(…),请升级 edgeweir-node」节点版本过旧升级节点,见节点升级
在 GitHub 上编辑

本页目录