pub(crate) async fn previous_release_assets(
previous_root: PathBuf,
req: Request,
next: Next,
) -> ResponseExpand description
Axum 中间件(由 startup.rs 按需挂载):旧发布资源保留窗口(plan §6.7)。
滚动更新后,已打开标签页与反代/浏览器缓存的旧 HTML 仍引用上一发布的带
hash 资源(含按路由懒加载的 WASM 分包);新发布未收录这些文件时(404),
回退到 YGG_PREVIOUS_PUBLIC_DIR 同路径文件。语义:
- 只拦截 /pkg/ 的 GET 404,未命中保留原 404,不遮蔽当前发布 的真实缺失;
- 复用 ServeFile 的内容类型推断与
.br旁车协商(release public 自带旁车, 与静态资源服务的预压缩行为一致); - 命中即 immutable(内容寻址)并带
x-previous-release标记,外层 add_cache_control 的 or_insert 不会覆盖。