Skip to main content

previous_release_assets

Function previous_release_assets 

Source
pub(crate) async fn previous_release_assets(
    previous_root: PathBuf,
    req: Request,
    next: Next,
) -> Response
Expand 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 不会覆盖。