perf: 大文档性能优化——1.getMarkdown 防抖 300ms: 2000-5000 行文档每次按键序列化全量 markdown 开销大, 改为 debounce 300ms; 2.dsh-flush-body 事件: Ctrl+S/关窗/切文档前同步编辑器内容到 store, 确保保存不丢内容; 3.openDoc 不 await saveNow: 旧文档保存与新文档读取并行, 加快切换速度; 4.自动保存间隔 1s→3s: 大文档每秒写盘 I/O 压力大; 5.修复 save-mechanism E2E 测试时序适配新防抖

This commit is contained in:
hunter-dev
2026-08-27 15:48:19 +08:00
parent 3fe35ef873
commit ebd955ce4b
4 changed files with 32 additions and 8 deletions
@@ -62,7 +62,8 @@ test('FR-S4:关窗冲刷未保存内容', async () => {
await a.page.keyboard.type('before-close-flush');
// 等一下让内容进入 store
await a.page.waitForTimeout(200);
// 手动触发 saveNow(模拟 beforeunload 冲刷)
// 冲刷编辑器内容到 store 再保存(模拟 beforeunload 冲刷)
await a.page.evaluate(() => window.dispatchEvent(new CustomEvent('dsh-flush-body')));
await a.page.evaluate(() => (window as any).__STORE__?.getState?.().saveNow?.());
await a.page.waitForTimeout(500);
await a.app.close();
@@ -86,7 +87,10 @@ test('FR-S6:reloadDoc 检测外部改动', async () => {
await a.page.locator('.ProseMirror').click();
await a.page.keyboard.type('original');
await a.page.waitForTimeout(2000); // 等待自动保存
await a.page.waitForTimeout(200);
await a.page.evaluate(() => window.dispatchEvent(new CustomEvent('dsh-flush-body')));
await a.page.evaluate(() => (window as any).__STORE__?.getState?.().saveNow?.());
await a.page.waitForTimeout(500); // 等待保存完成
// 外部修改文件
const filePath = nodePath.join(vault, '重载测试.md');