mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 22:06:38 +08:00
3.0 KiB
3.0 KiB
边缘缓存对齐 Cloudflare 默认模型 — 实现计划
对应设计:edge-cache-design.md
1. 目标与背景
- 需求背景:现网对会话 Cookie / Authorization / 请求 Cache-Control 一律旁路,登录用户静态资源几乎全是「未缓存」,命中率远低于 Cloudflare 默认。需对齐 CF 两段闭环:请求 eligible × 响应可共享缓存。
- Scope(必做)
- 删除请求侧 Cookie、Authorization、请求 Cache-Control 旁路
- 响应侧:
proxy_no_cache绑定$upstream_http_set_cookie - 默认
proxy_cache_valid(200/206/301→120m,302/303→20m,404/410→3m) - 默认静态扩展名移除
json;保留map/mjs/wasm - 渲染单测 + UI 文案 + 设计/changelog
- Out of Scope:Purge、Cache Rules、强制忽略源站 CC、Auth RFC 条件缓存、HEAD→GET
2. 设计决策摘要
| 决策 | 选择 |
|---|---|
| 请求 Cookie | 不旁路(对齐 CF) |
| Set-Cookie | 不入库 |
| 无源站 CC | 状态码默认 Edge TTL |
| json | 默认表移除 |
| 兼容 | url→all 不变;行为变更需重新发布配置 |
3. 修改清单
边缘渲染
-
[MODIFY]
pkg/render/openresty/render.gorenderRouteCacheBlock:仅保留非 GET 旁路;proxy_no_cache $openflare_skip_cache $upstream_http_set_cookie;追加三行proxy_cache_valid
-
[MODIFY]
pkg/render/openresty/types.goDefaultStaticCacheExtensions:去掉json
-
[MODIFY]
pkg/render/openresty/render_test.go- 断言:无 cookie/auth/cache_control 旁路;含 set_cookie 与 proxy_cache_valid;表不含 json、含 map
前端
-
[MODIFY]
frontend/app/(main)/proxy-routes/detail/components/cache-section.tsx- 去掉「绕过登录 Cookie / Authorization」类文案
- 改为 CF 对齐说明:源站 private/no-store、Set-Cookie 不入库、默认静态不含 HTML/JSON
文档
-
[MODIFY]
docs/design/edge-cache-design.md(已更新) -
[MODIFY]
docs/changelog/index.md[Unreleased] -
[MODIFY]
docs/plan/index.md登记本计划
不改
- 无 DB 迁移
- 无 API 字段变更(策略枚举不变)
4. 验证计划
自动化
go test ./pkg/render/openresty/
make format
make code-check
数据面(配置发布后)
- 站点
cache_enabled+static,全局缓存开 - 带 session Cookie:
GET /static/app.js第二次应 HIT GET /index.html应为未缓存- 源站返回
Set-Cookie的静态 URL 不应出现稳定 HIT - 访问日志
cache_status与三态一致
5. 发布注意
- 节点需 重新发布/拉取配置版本 后旁路变更才生效
- 若站点依赖边缘缓存
*.json,改为suffix含 json 或all
6. 状态
- 设计定稿(用户确认:全量对齐 CF)
- 渲染与单测
- UI 文案
- changelog / plan index
make format+make code-check- 复查补强:
all策略 UI 警告;proxy-config / troubleshooting 运维说明 - 用户确认后提交