外观
完整本地搜索索引静态资产化
机制与范围
保留分配诊断已定位较大搜索Map及字符串路径。锁定VitePress1.6.4的localSearchPlugin将完整索引双重字符串化为JS字面量,交给Rollup/esbuild;客户端再JSON.parse这个default字符串后MiniSearch.loadJSON。对该数据重新构建JS AST没有必要。当前28/66、中断交付未闭环;不动指标数据或手机。
定稿方案
在Vite用户插件configResolved中,仅适配锁定vitepress:local-search的load钩子;不改node_modules。根索引load仍调用原实现完成全页/全locale索引,保持原有字段、分词、权重和条目。按原根模块的静态locale导入调用原locale load,严格校验export default JSON字符串,将解码一次后的完整索引字符串用Rollup emitFile写成带hash的JSON资产。根模块locale loader改为同源fetch该资产,检查HTTP成功并返回{default:原字符串},保持客户端现有消费合同。
只替换索引数据传输包装,不删页面/section、不修改搜索内容;最多32 locale、单索引32MiB、总64MiB、解析根模块≤16KiB。遇未知锁版/钩子格式、重复locale或非字符串立即失败,不回退到残缺索引。生产URL由Rollup_FILE_URL引用生成,兼容base;不写CDN,不需顶层await。开发server沿用内建实现,build才启用。
主线O(索引字节),原索引生成成本不变;避免JS解析/压缩该大字面量及其AST。新增插件串行处理locale(目前一个),预计新增包装≤0.2秒/额外≤2倍单索引字节;整体同180秒/1536MiB/1024MiB堆/32进程门。保留此前所有失败,不能宣称其中某一改动单独解决资源问题。
验证与复核
窄控制检查原索引逐字节保留、两locale/hash引用、HTTP失败拒绝、未知格式/过量/错误类型拒绝。一次新常规整站构建和源SHA/锁核同,记录wall/CPU/聚合RSS/进程/输出规模及0死链。浏览器核完整搜索能命中当前中断结果、旧历史及知识页,及Mermaid现有各图类型代表实际渲染;静态闭包不能替代UI。成功后才追加结果/知识/归档、窄提交双推并进行生产发布源验证。任何失败保持partial,下一步重新归因,不扩堆或缩内容。
Implementation / Validation Update · 2026-10-19
索引资产适配及2控制通过(68.9ms):两locale、逐字节相同、fetch错误和格式/大小门。首个反控有测试输入替换未实际改变原字符串,已修正构造后通过;未改生产语义凑通过。新常规构建8.797秒/CPU19.129秒,聚合1,614,708,736B触原门(超4,096,000B),Node构建1,430,519,808B、npm71,106,560B、esbuild113,082,368B;源1199文件/21,104,038B稳定,1997个部分输出/55,679,384B不是整站成功。该改动仍不足以在1024MiB old-space配置下通过。
Resource Qualification Decision · 2026-10-19
保留分配采样已证约550.5MB保留分配、采样完成heapUsed582.7MB/heapTotal745.5MB;源码也证索引双重编码及大模块图。现已将索引移出JS解析、Mermaid移出Rollup图,但1024MiB old-space会允许更多空闲堆/短命分配与原生esbuild同时驻留。下一仅作一次有依据的向下收紧堆资格:旧768MiB OOM发生在上述改动之前,不能当作新图的资格结论;对新图选择768MiB(保留采样量上方约222MB余量),让GC更早发生,聚合1536MiB/180秒/32进程门保持,绝不扩预算。采样不是全程上界,因此这仍是待验证的资源假设。
本次只改变私有执行入口NODE_OPTIONS,源码/锁与功能实现保持,不作多档参数搜索;若失败,停止堆路线。若通过,须记录实际GC/耗时取舍和最终整站/链接门,不将降低设定值本身称资源优化。后续正式build/deploy沿用通过资格的同配置,并继续以聚合RSS门约束,不能靠隐藏npm父进程通过。
Final Validation / Isolation Decision · 2026-10-19
新图768MiB单次资格11.898秒/CPU31.248秒后exit-6,V8明确heap OOM;聚合峰1,491,894,272B未超1536MiB,守卫未发信号。源1199文件/21,105,699B稳定,部分输出1997文件/55,693,348B保留。堆紧缩没有通过,停止该路线;不能把未超RSS当构建成功。全站0死链、浏览器搜索/图渲染和线上发布均未完成,纯控制不能代替它们。
全部功能候选隔离于codex/site-memory-diagnostic-20261019审计快照,不应用到main,禁止盲合并。该快照包含Mermaid本地分发、Git预取、搜索索引资产化和窄控制;各自未证明满足完整资源门。main仅接收本次方案/失败/归因记录和恢复状态,不修改已验指标、依赖锁或生产构建语义。尚未验证完整浏览器功能,不保留为正式优化结论。无需重跑历史指标或a02队列。
下一仍是中断交付的网站资源修复,需要基于客户端/服务端持有对象生命周期进一步设计;不再搜索堆参数,不扩大资源门。Cloudflare与Webhook本机安全配置继续缺失。当前28/66/剩38,指标结论与交付partial分别保留,旧机资料核SHA前不清理。