diff --git a/docs/global-access-performance-plan.md b/docs/global-access-performance-plan.md index 5e9b402..b5c6100 100644 --- a/docs/global-access-performance-plan.md +++ b/docs/global-access-performance-plan.md @@ -5,9 +5,9 @@ document_status: draft source_of_truth_for: "domestic and international access performance risks, improvement order, and non-regression guardrails" language: zh-CN created_at: "2026-08-04" -last_updated: "2026-08-04" +last_updated: "2026-08-05" review_commit: "uncommitted" -review_worktree: "clean before this document" +review_worktree: "Wave 0..2 (GAP-001..007) applied; GAP-004 CF rule live; GAP-007 FA subset deferred; uncommitted" next_item_id: "GAP-008" --- @@ -89,7 +89,7 @@ Wave 0 和 Wave 1 完成后先复测,不自动进入大陆 CDN 或多地域源 ### GAP-001 — 移除 Google Fonts 渲染关键路径依赖 -- 状态:`todo` +- 状态:`done` - 优先级:`P0` - 依赖:无 @@ -108,7 +108,7 @@ Wave 0 和 Wave 1 完成后先复测,不自动进入大陆 CDN 或多地域源 ### GAP-002 — 删除 unpkg FilePond CSS 外链 -- 状态:`todo` +- 状态:`done` - 优先级:`P0` - 依赖:无 @@ -127,7 +127,7 @@ Wave 0 和 Wave 1 完成后先复测,不自动进入大陆 CDN 或多地域源 ### GAP-003 — 缩小普通页面 logo 下载字节 -- 状态:`todo` +- 状态:`done` - 优先级:`P1` - 依赖:无 @@ -147,10 +147,12 @@ Wave 0 和 Wave 1 完成后先复测,不自动进入大陆 CDN 或多地域源 ### GAP-004 — 为公开 raw 战报增加 Cloudflare 边缘缓存 -- 状态:`todo` +- 状态:`done`(应用层 + 生产 Cache Rule 均完成,已实测 `HIT`;国内/海外探针对比为建议后续项) - 优先级:`P1` - 依赖:Cloudflare Cache Rule 修改授权、生产发布授权 +生产配置实况(重要坑):`Cache-Control: private, no-cache` 会让 Cloudflare 在 Edge TTL「respect origin」("Use cache-control header if present...")模式下直接 `BYPASS`,即使 origin 同时发了 `Cloudflare-CDN-Cache-Control: public, max-age=86400`(该头会被 CF 消费后从返回给客户端的响应里删除,`curl` 看不到,无法据此判断 origin 是否发了)。最终解决办法是不依赖 header 覆盖:把这条 Cache Rule 的 **Edge TTL 改为 "Ignore cache-control header and use this TTL" = 1 day**,**Browser TTL 保持 respect origin**。这样边缘强制缓存 24h、浏览器仍拿 `private, no-cache` 继续 revalidate。app 里的 `Cloudflare-CDN-Cache-Control` 头在此模式下闲置但保留(自文档 + 备用)。实测同一 raw URL 第二次请求 `cf-cache-status: HIT`(带 `age`),浏览器头不变。 + 问题与影响:`/r/raw/*` 是公开且基本不可变的战报 HTML,但当前响应为 `Cache-Control: private, no-cache` 和 `CF-Cache-Status: DYNAMIC`。国内访问需要动态回源东京,热门战报重复访问无法利用边缘。 方向沿用 [CDN-001](cdn-improvement-plan.md#cdn-001--为公开且基本不可变的-raw-战报增加-cloudflare-边缘缓存): @@ -168,7 +170,7 @@ Wave 0 和 Wave 1 完成后先复测,不自动进入大陆 CDN 或多地域源 ### GAP-005 — reader 页 WoD 德国站 CSS/JS 本地镜像 -- 状态:`todo` +- 状态:`done`(代码完成并测试;建议部署后做浏览器功能回归:tooltip/皮肤/跳转) - 优先级:`P1` - 依赖:功能兼容验证 @@ -195,10 +197,12 @@ Wave 0 和 Wave 1 完成后先复测,不自动进入大陆 CDN 或多地域源 ### GAP-006 — Google tag 改为非阻塞增强能力 -- 状态:`todo` +- 状态:`done`(配置开关 + 延迟加载;已测试。建议部署后确认 GA 仍能收到数据) - 优先级:`P2` - 依赖:是否仍需要 Google Analytics 数据 +实现方式:GA4 measurement id 抽成模块级常量 `config.py::GOOGLE_ANALYTICS_ID`(默认保留现有 `G-TYGCT601XW`,置空即完全关闭),经 `app.py` context processor 注入为 `google_analytics_id`。`base.html` 仅在其非空时渲染;且不再在 `` 里硬加载 ` {% block title %}{% endblock %} - 战报网 - - + {% if google_analytics_id %} + + {% endif %} {% endblock %} @@ -38,7 +63,7 @@