渲染与性能
一次更新不仅包含 Markdown 解析,还包括完整字符串预处理、树转换、框架构建或更新、代码高亮、图表和浏览器布局。优化一个阶段,不等于每次更新只需处理新增字符。
共享层与框架层
Section titled “共享层与框架层”Engine 负责语法与增量解析;Core 提供会话、块规划、贡献和协调。React 使用块规划与元素缓存;Vue 转换整帧 HAST,再由 Vue 执行更新,不能把 React 的缓存收益直接套到 Vue 上。
增量解析主要复用已确认的前缀,仍要处理未冻结尾部。持续增长的表格、围栏或完整字符串预处理器可能保持较高成本。React 只有在 blockMemo 开启时才使用增量路径,服务器输出使用完整解析。
插件数组、schema、组件映射和函数应保持稳定,直到配置真的变化。不要原地修改正在使用的对象。块 key 只表示匹配关系,不单独证明缓存有效;URL 策略、引用依赖、组件身份与树位置变化也可能要求重新转换。
使用实际应用的消息样本和生产构建,分别记录解析、框架提交、高亮和布局耗时。同时比较渲染结果是否正确,记录多次运行的波动,以及浏览器、设备、版本和数据发送节奏。历史基准只代表当时的测试结果。