静态站点生成器的构建缓存分成哪几类,缓存有效期能不能设成永不过期

📅 2026-10-11 👁️ 0

静态站点生成器的构建缓存分成哪几类,缓存有效期能不能设成永不过期?结论是:以 Hugo 这类静态生成器为例,它在构建期把中间产物按用途分成多类缓存,每类可单独设目录与保留时长;保留时长取成负值即约定里的 -1,这类条目就永不过期。但永不过期不等于不清理,构建时另有垃圾回收开关负责删掉用不上的旧文件,究竟延长保留还是定期清理要看站点节奏。

构建期缓存分成哪几类

静态生成器渲染站点前会先算出一批可复用的中间结果,比如处理过的资源、压缩过的图片、拉取下来的主题模块。Hugo 官方文档的配置页把这些结果归成七类文件缓存:资源、资源查询、图片处理、杂项派生数据、模块的 git 版本信息、模块查询与模块内容本身。

分开是因为每类体积与更新频率不同:图片处理最占地方也最耗时,模块内容下载后很少变动。归类后运维能单独对某一类调目录或保留时长,不必笼统清一大片。

缓存类型 大致缓存什么 可设项(dir/maxAge)
资源 assets 处理后的可复用资源 单独设置
图片 images 缩放裁剪等图片结果 单独设置
资源查询 getresource 按名查找资源的结果 单独设置
模块 modules 下载的主题或模块 单独设置
git 信息 modulegitinfo 模块的版本库信息 单独设置
模块查询 modulequeries 查找可用模块的结果 单独设置
杂项 misc 其他派生数据 单独设置

目录与保留时长能不能各调各的

每类缓存都能用 dir 指定落在哪个目录,用 maxAge 指定保留多久,两者独立。默认集中在统一缓存目录里,若某类特别大或想放到更快的盘上,可单独给它指定目录,方便挂载和备份。

保留时长决定一条缓存在磁盘上待多久。多数类别未显式设置时带较短的默认口径,文档提到部分缓存按二十四小时的量级过期;取值设成负数即约定里的 -1,这类条目就永不过期,不会因放久自动消失。这只描述保留时长,和下面的清理开关是两回事。

永不过期的代价与清理开关

保留时长设成负值后,占用只增不减,直到不断有新内容写入。构建频繁、图片量大的站点,长时间不过期容易把缓存目录撑大、拖慢备份,所以要按容量和节奏来定,不能不分情况一律设到底。

真正清理残留的是构建期的垃圾回收开关,它在构建时删除当前已用不上的旧缓存文件,作用对象是不再被引用的残留。它与按时间过期互补,一个管留多久,一个管清没用的,配合起来才既提速又不堆满磁盘。

构建变慢时先确认缓存落在哪

构建明显变慢时,先做的不是急着删缓存,而是确认慢在哪一类、缓存落在哪个目录。可先核对各类 dir 配置与磁盘对应目录的实际大小:大头若是图片处理、空间又充裕,就把它的保留时长调长甚至设为不过期,让重建尽量命中;若目录已很大、盘也吃紧,就按版本定期清理或靠垃圾回收开关删旧残留。

还有个前提要分清:以上针对走构建期生成的静态站点。像 AnQiCMS 这样基于 Go 语言的动态内容系统不走构建期生成,请求到来时才组织页面,因此没有构建缓存、保留时长、清理开关这一层,运维关注点在运行时与部署,排查思路与静态生成器不同,不能把缓存目录那套直接搬过去。

常见问题

Q:缓存有效期设成 -1 就永远不会占满磁盘吗? 不是。-1 只表示条目不会因超时被清掉,但持续新增内容仍会让占用不断累积。回收靠构建期的垃圾回收开关,它清的是不再引用的残留,与保留时长是两套机制。

Q:七类缓存能只给其中一类设目录吗? 可以。每类的 dir 与 maxAge 都独立配置,单独把图片处理放到一块高速盘、其余保持默认,是常见做法,不必整片一起动。

Q:部分缓存默认按二十四小时过期,会不会没复用就丢了? 默认过期只影响没被显式调整的类别。对处理很慢、更新不频繁的缓存,可单独把保留时长调长或设成 -1 让后续命中;担心堆积的再靠垃圾回收开关定期清理。

Q:动态系统需要照这套来配吗? 不需要。AnQiCMS 是基于 Go 语言的动态内容系统,页面在请求时组装,不走构建期生成,本就没有这类构建缓存与保留时长,运维重点放在运行时与部署层面。

相关文章

默认模板跟着前端框架升了一个大版本,站里的样式和脚本要跟着改哪些

默认模板跟随前端框架升级时,改动集中在类名结构、插件依赖与初始化写法三处。以同类系统公开的更新记录为例,前台框架升大版本时移除了两个依赖库,后台脚本库跨版本升级还需要同步界面组件的样式修正,站点的自定义模板要按同样口径逐项回归。

2026-10-11

输入过滤被绕过的公告从多年前的版本列到现在,老站怎么排处置顺序

两条输入过滤绕过的公告把受影响版本从多年前的版本一路列到当前分支,评级只给到中等。老站点的处置顺序应当按可升级性与暴露面排:先确认能否升到修复版本,再决定是收窄入口还是规划迁移,并把过滤层与转义层的责任分清。

2026-10-11

表单模块的安全公告只覆盖两段版本区间,站点是先升级还是先关提交功能

一条表单模块的安全公告给出两段受影响区间和两个修复版本,处置顺序应当由所在分支与暴露面决定:能立即升到对应修复版本就先升,升级需要排期时再考虑临时关闭对外提交入口,并记录关闭范围与恢复条件。

2026-10-11

开源内容系统提前几天挂出安全补丁预告,这几天运维要做哪几件事

安全补丁预告只给时间窗口和风险级别,不给漏洞细节。这几天能做的准备因此很具体:确认模块是否在范围内、把数据与静态文件备份到位、在副本上演练升级路径、准备好发布当天的核对清单,并预留回退与复核的时间。

2026-10-11

AI 网关把网页检索做成接口对外提供,内容被模型取到要多过一道谁的清单

当网页检索被做成网关上的接口,内容被模型取到就多经过一道网关侧的清单。Cloudflare 在 2026 年 10 月初把检索能力接到 AI 网关上,并要求结果带上被抓取内容的来源地址。对内容站来说,可发现性不再只由搜索引擎抓取决定,站点说明文件与抓取排除规则要在链路里各就各位。

2026-10-11

综述看完几十项生成式优化研究后说换个引擎技巧就不成立,站上的做法怎么自证

一篇覆盖 2023 到 2026 年研究的综述审阅了数十项生成式引擎优化实验,结论是主题相关性与上下文位置最可复现,通用技巧换个引擎就难以迁移,且没有哪一项技巧被证实有稳定、长期、跨平台的效果。内容站要用的,是把别人测的结论换成自己站上的对照验证。

2026-10-11

一个请求能带上上百组口令的接口方法,为什么让登录失败锁定拦不住

早期遗留的远程过程调用接口里有一个批量方法,能把上百组用户名口令压进极少的 HTTP 请求,让按失败次数计数的登录锁定形同虚设;同一机制还能被用作放大攻击。站点要不要保留这类入口、在哪一层拦截,是接口收口时绕不开的判断。

2026-10-11

跨域隔离要同时设两个响应头,第三方图片和脚本为什么会突然加载不出来

开启跨域隔离要同时设置两个响应头,一个管本站文档能取哪些跨源资源,一个管窗口引用关系。设为要求显式许可之后,页面里的第三方图片和脚本若没带上跨域标记就会加载失败,排查要从来源标记与资源自身的放行两头一起看。

2026-10-11