Improve performance for large-scale block deletion/insertion https://github.com/siyuan-note/siyuan/issues/16644

Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
Daniel 2025-12-21 15:42:02 +08:00
parent 80faba6c75
commit 89952fa8b4
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
6 changed files with 181 additions and 217 deletions

View file

@ -61,11 +61,9 @@ func (tx *Transaction) doFoldHeading(operation *Operation) (ret *TxErr) {
})
}
heading.SetIALAttr("fold", "1")
if err = tx.writeTree(tree); err != nil {
return &TxErr{code: TxErrCodeWriteTree, msg: err.Error(), id: headingID}
}
IncSync()
tx.writeTree(tree)
IncSync()
cache.PutBlockIAL(headingID, parse.IAL2Map(heading.KramdownIAL))
for _, child := range children {
cache.PutBlockIAL(child.ID, parse.IAL2Map(child.KramdownIAL))
@ -126,9 +124,8 @@ func (tx *Transaction) doUnfoldHeading(operation *Operation) (ret *TxErr) {
}
heading.RemoveIALAttr("fold")
heading.RemoveIALAttr("heading-fold")
if err = tx.writeTree(tree); err != nil {
return &TxErr{code: TxErrCodeWriteTree, msg: err.Error(), id: headingID}
}
tx.writeTree(tree)
IncSync()
cache.PutBlockIAL(headingID, parse.IAL2Map(heading.KramdownIAL))