Skip to content

缓存组件与调优

缓存均有界并属于一次 runtime/service 生命周期,观测名称分别为 resourcetemplate_environmentfilehosttakumi_compiled

组件 失效方式 完整释放
Resource fetch cache validator 自动复查;单次 fetch 可 refresh=True service cleanup
Jinja environment template auto-reload、environment LRU service cleanup
Filehost mapping/store TTL、容量与 lease service cleanup 释放当前 namespace,并关闭 aiohttp server
Takumi compiled/native state capability 自有缓存规则 service cleanup;继续服务需新 runtime

caller-facing ResourceAccess 不暴露全局 clear。需要重新验证单个 locator 时使用fetch(reference, refresh=True)fetch_bytes(...)fetch_text(...);不要为了刷新一个资源关闭 service。

Jinja environment cache key 同时包含 Jinja plugin/filter 的名称和 callable identity;高基数动态 filter 会造成持续抖动,无法通过单纯增加内存解决。Takumi 通过TakumiSession.compiled_cache_stats 暴露只读的 hit/miss/entry/weight snapshot。

cleanup 开始后 admission gate 拒绝新操作,并等待所有在途 cache/resource/capability操作完成。关闭失败可重试,但 runtime 一旦进入 closing 就不能恢复服务;由 Entari重新加载插件以取得新 service。

Prometheus 缓存指标使用 entari_htmlrender_cache_eventsentari_htmlrender_cache_entriesentari_htmlrender_cache_resident_bytes