yuebin's blog

描述!!!!!

yuebin's blog

测试MD能否上传

两件事:① 回答"缓存时间"到底控制什么;② 你说的那三列(含缓存策略)只对自己 CMS 有意义——这是确实存在的 UI 信息缺陷。先看代码现状:

看清楚了。先核实「缓存时间」这个字段现在是否还有人消费(这是你问题的关键):

核实清楚了,这个字段不是僵尸,但它确实是个"半失效"的坑。先立计划再改:

UI 改动必须验证渲染。先找插件实例化方式:

渲染验证 11/11 全过,两处旧结构确认消失(输出 85271 字节)。签核:

先回答你的问题:「缓存时间」到底管什么

查到代码在 :1882 —— 它跟 Worker 的 KV 缓存完全没关系:

导出单页时,在 HTML 的 </head> 前插入一行:
<meta http-equiv="Cache-Control" content="public, max-age=<你填的值>">

所以它控制的是「这份单页 HTML 允许浏览器 / CDN 缓存多久」。之所以让人困惑,是因为原 UI 只有"缓存时间 秒"四个字,而三件事它一个字都没说(现在都补上了):

  1. 值写死在 HTML 里 ⇒ 改完必须重新生成/导出单页才生效(这是最容易踩的);
  2. 走 Worker 访问时它基本不起作用 —— Worker 会发真正的 HTTP Cache-Control 头(R2 命中 3600 / 按需渲染 300),而 HTTP 头优先于 meta;
  3. 它是第三种缓存,跟下面那套不是一回事。

站点上其实有三套"缓存",原来 UI 把它们混在一起

# 缓存 在哪 谁消费 适用范围
1 单页缓存头(原"缓存时间") 写进单页 HTML 的 meta 浏览器 / CDN 两种用法都有(走 Worker 时被响应头盖过)
2 KV 缓存(缓存策略 TTL×4 + feed 条数) D1 settings → KV site:ctx Worker 动态页 仅自托管 CMS
3 响应头缓存 Worker 直接发 浏览器 / CDN 仅自托管 CMS(静态档没有)

(另外澄清一点:单页永远直读 R2,不走第 2 套缓存 —— 单页的浏览器缓存只看第 1 套。)

你的判断:完全正确 ✓

这四项都只对自己 CMS(Worker)生效:

项 谁消费 纯静态档(local/s3/ftp/webdav)
发布后即时刷新侧边栏 WP 主动清 Worker 的 KV ✗ 没有 KV
发布后即时刷新列表页第一页缓存 传给 Worker 的 purge_on_publish ✗ 没有 Worker 接口
编辑页自动比对 Worker 版本 读写 Worker 的 /wp-json ✗
缓存策略(TTL×4 + feed 条数) Worker 读 site:ctx ✗

而且顺着你这条我发现了更该改的地方:「高级选项」那一栏里混进了根本不该混的东西 —— 移除动态脚本 / 启用日志 / Gzip / 调试模式 是导出与渲染类的(两种用法都有效),跟那三个 Worker 专属复选框塞在同一个格子里,误导性比"没说清楚"更强。

所以改成了这样(提交 3521d4e)

原来 现在
缓存时间 单页缓存头 + 三段说明(meta 本质 / 需重导出 / Worker 下以响应头为准 / 纯静态档才主要依赖)
高级选项(全混一起) 导出与渲染(4 项,注明"两个用法都有效")
+ ⚙️ 自托管 CMS 运行时(副标题"仅 cfse-worker 目标",蓝框标注"纯静态档不使用——没有 KV、也没有 Worker 接口可调,配了也不会被执行")
缓存策略(独立一行) 并入「自托管 CMS 运行时」组(本来就是一体的)
— 补两条提示:两个 purge 开关只在对应 TTL>0 时才有意义(TTL=0 本就是每请求直查 D1);单页永远直读 R2、不走这套缓存

验证:把设置页在服务器上真实渲染出来逐项核对 —— 11 项全部 YES,两处旧结构(>高级选项<、<th>缓存策略</th>)确认已消失,输出 85271 字节,无告警。

一句话:你问的"缓存时间是做什么的"——答案是它管的是单页的浏览器/CDN 缓存,不是 Worker 的缓存;而你说"下面三列只适用于自己 CMS"——对,而且我把漏掉的第四项(缓存策略)和混错位置的 4 个导出设置也一并归位了。

发表评论

邮箱不会被公开。带 * 的为必填项。