资源指纹
为主题自带的 CSS / JS / 图片 / 字体引用自动追加内容哈希(?v=xxxxxxxx),实现「永久强缓存 + 自动失效」。默认开启。
工作原理
引用变化前:<link rel="stylesheet" href="/css/layout.css?v=03a4efc4">
修改样式后:<link rel="stylesheet" href="/css/layout.css?v=91b2d7f0"> ← 哈希变化,URL 变化
- 构建时对源文件内容计算 SHA-256 哈希(CSS 追溯到
.styl源文件及其全部@import依赖;字体追溯到生成产物) - 哈希追加到页面中所有本地资源引用的 URL 上
- 浏览器看到带指纹的 URL,可放心启用一年期强缓存
- 任何源文件变更 → 哈希变化 → URL 变化 → 缓存自动失效,回访者拿到新资源
配置
fingerprint:
enable: true # 默认开启;置 false 恢复为不带指纹的原始 URL
覆盖范围
| 位置 | 处理方式 |
|---|---|
HTML 中 src / href 属性 | ✅ 追加 ?v= |
内联 <style> 中的 url()(如 @font-face 字体) | ✅ 追加 ?v= |
| preload 字体链接 | ✅ 追加 ?v= |
hexo server 本地预览 | ✅ 同样生效,便于调试 |
不处理:外链资源(http://、https://)、纯锚点(#)、相对路径资源。
说明
- 哈希基于文件内容而非版本号:只改一个字符,哈希即变化
- 与 PWA Service Worker 缓存配合:带指纹的资源变更后,SW 缓存键随之更新,访客不会停留在旧版页面
- 已有查询串的 URL 只更新
v参数,不会叠加出?v=a?v=b - 主题外的资源(你自己注入的脚本、文章内图片)不受影响