Expand description
固定路径静态资源的内容版本号。
全局样式、启动脚本和按需加载的浏览器库放在 public/ 下,文件名固定。页面引用它们时带
?v=<内容摘要>:内容一变地址就变。EdgeOne 的缓存键包含查询参数,所以浏览器和 CDN
节点都能长期缓存,见 middleware::cache_control_for_path。只有版本号与当前文件一致时
才返回 immutable;滚动发布期间旧页面带旧版本号来请求,拿到的新内容仍须每次校验,
不会以旧地址被长期缓存。
服务端按文件内容计算摘要,按修改时间和长度缓存。make dev-assets 改了文件,下一次
渲染就会换新版本号。版本表经 shell 里的 <script type="application/json">
(id 为 VERSIONS_ELEMENT_ID)下发给浏览器:Rust 端用 url 读取,libs 用
@yggdrasil/shared 的 assetUrl 读取。文件不存在时(未构建 libs 的测试或开发环境)
返回不带版本号的地址,缓存策略也退回 no-cache。
Modules§
- server 🔒
Constants§
- ADMIN_
CSS - 后台与组件图鉴样式(Tailwind 产物,入口 input-admin.css)。
- ADMIN_
CSS_ ELEMENT_ ID - 后台样式
<link>的 id:SSR 写入与客户端补插共用,避免重复插入。 - ALL
- 参与版本化的全部资源。后五项由 libs 按需加载,地址写在
libs/yggdrasil-core/src/browser-library.ts。 - CORE_
CSS - yggdrasil-core 样式。
- CORE_JS
- yggdrasil-core 启动脚本(导航协调器、主题、浏览器库加载器)。
- ENHANCE_
JS - 正文增强脚本(mermaid、目录、changelog、瀑布流)。
- HIGHLIGHT_
CSS - 代码高亮样式。
- KATEX_
CSS - KaTeX 样式。
- LIGHTBOX_
CSS - 灯箱样式。
- LIGHTBOX_
JS - 灯箱脚本。
- STYLE_
CSS - 站点样式(Tailwind 产物)。
- VERSIONS_
ELEMENT_ ID - 下发版本表的
<script type="application/json">元素 id,libs 里同名常量须保持一致。
Functions§
- ensure_
admin_ css - 客户端导航进入需要后台样式的路由时补插
<link>:已存在(SSR 写入或之前插过)就不动, 离开后也不移除。由这些路由的LazyRoute::data()调用,样式与视图分包并行下载。 - is_
current - 请求的
v参数是否等于该资源当前的版本号。 - needs_
admin_ css - 该路径是否需要后台样式:后台
/admin…与组件图鉴/about/components…。 - url
- 带版本号的地址;没有版本号(文件缺失)时原样返回。
- versions_
json - 版本表 JSON(
{"/style.css":"…",…}),只含存在的文件。路径与摘要都不含需转义的字符。