Expand description
有容量和 TTL 上限的匿名公开页 HTML 缓存。
不依赖框架的磁盘 ISR:生产非 root 容器无须写 /app,写操作能真正失效内存。
透传响应流,在完整成功读完后保存;取消、超大响应和跨失效世代的响应不会回填。
写入后在阻塞线程池按已启用的算法高档压缩一次(Effort::Cached),命中时按
Accept-Encoding 直接返回预压缩变体,不再每次现压。
Structs§
Constants§
- CACHEABLE_
PAGES 🔒 - 白名单内的固定页面。源站缓存与边缘缓存共用这份名单:
tasks::edge_purge按它清 EdgeOne, 新增公开路由要同时出现在两处,否则边缘缓存清不掉。 - CACHEABLE_
PREFIXES 🔒 - 白名单内的前缀:只匹配其下一级路径(
/post/<slug>)。 - MAX_
CACHE_ 🔒BYTES - 缓存总量。单页上限(
SsrCacheSettings::max_page_bytes,后台「页面缓存」可调,默认 2 MiB) 不超过它,否则一页就会挤掉整个缓存。
Statics§
Functions§
- bump_
global_ generation - cache_
public_ html - 在压缩层内侧缓存原始 HTML,保持 SSR 流式响应和现有静态资源预压缩行为。
- cacheable_
request 🔒 - 采用白名单,查询参数、登录 Cookie、认证头和私有路由永远不进入共享 HTML 缓存。
- cacheable_
response 🔒 - current_
global_ generation - edge_
cache_ 🔒control - hit_
response 🔒 - 命中响应。协商出的编码有预压缩变体时直接返回;否则给出原始 HTML,由外层压缩层
现压或回 406。启用压缩时一律带
Vary: Accept-Encoding(含 304)。 - invalidate_
post_ preview - invalidate_
ssr_ all_ public - invalidate_
ssr_ route - precompress 🔒
- 在阻塞线程池按已启用的全部算法压缩一次再写回缓存。brotli 11 每 100 KB 约 0.1 s, 不占请求路径;补齐前的命中照旧由外层压缩层现压。
- public_
page_ 🔒cache_ control - 白名单匿名页的
Cache-Control。浏览器缓存清不掉,所以浏览器一律每次校验(max-age=0); 边缘缓存时长(SsrCacheSettings::edge_ttl_secs)大于 0 时用s-maxage让 CDN 缓存, 内容变更后由tasks::edge_purge清除。为 0 时no-cache,EdgeOne 不缓存、每次回源。 - set_
release_ namespace - 设置发布×flavor 命名空间(plan §6.7),变化即整表失效。启动期与开发热重载 重组路由时调用;同一进程内 release/flavor 不变时是零成本空操作。