Skip to main content

Module ssr_cache

Module ssr_cache 

Source
Expand description

有容量和 TTL 上限的匿名公开页 HTML 缓存。

不依赖框架的磁盘 ISR:生产非 root 容器无须写 /app,写操作能真正失效内存。 透传响应流,在完整成功读完后保存;取消、超大响应和跨失效世代的响应不会回填。 写入后在阻塞线程池按已启用的算法高档压缩一次(Effort::Cached),命中时按 Accept-Encoding 直接返回预压缩变体,不再每次现压。

Structs§

CachedPage 🔒
CaptureBody 🔒
HtmlCache 🔒
SsrGeneration

Constants§

CACHEABLE_PAGES 🔒
白名单内的固定页面。源站缓存与边缘缓存共用这份名单:tasks::edge_purge 按它清 EdgeOne, 新增公开路由要同时出现在两处,否则边缘缓存清不掉。
CACHEABLE_PREFIXES 🔒
白名单内的前缀:只匹配其下一级路径(/post/<slug>)。
MAX_CACHE_BYTES 🔒
缓存总量。单页上限(SsrCacheSettings::max_page_bytes,后台「页面缓存」可调,默认 2 MiB) 不超过它,否则一页就会挤掉整个缓存。

Statics§

HTML_CACHE 🔒

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 不变时是零成本空操作。