改进打开虚拟引用后加载文档的性能 https://github.com/siyuan-note/siyuan/issues/7378

This commit is contained in:
Liang Ding 2023-02-16 13:34:27 +08:00
parent f07ee114d1
commit c1b457eb76
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
2 changed files with 3 additions and 20 deletions

View file

@ -605,7 +605,6 @@ func GetDoc(startID, endID, id string, index int, keyword string, mode int, size
}
refCount := sql.QueryRootChildrenRefCount(rootID)
//virtualBlockRefKeywords := getVirtualRefKeywords(tree.Root.IALAttr("title"))
virtualBlockRefKeywords := getBlockVirtualRefKeywords(tree.Root)
subTree := &parse.Tree{ID: rootID, Root: &ast.Node{Type: ast.NodeDocument}, Marks: tree.Marks}

View file

@ -50,23 +50,7 @@ var virtualBlockRefCache, _ = ristretto.NewCache(&ristretto.Config{
func getBlockVirtualRefKeywords(root *ast.Node) (ret []string) {
val, ok := virtualBlockRefCache.Get(root.ID)
if !ok {
treeTitle := root.IALAttr("title")
buf := bytes.Buffer{}
ast.Walk(root, func(n *ast.Node, entering bool) ast.WalkStatus {
if !entering || !n.IsBlock() {
return ast.WalkContinue
}
content := treenode.NodeStaticContent(n, nil)
buf.WriteString(content)
return ast.WalkContinue
})
content := buf.String()
putBlockVirtualRefKeywords(content, root.ID, treeTitle)
val, ok = virtualBlockRefCache.Get(root.ID)
if !ok {
return
}
return
}
ret = val.([]string)
return
@ -141,8 +125,8 @@ func CacheVirtualBlockRefJob() {
})
poolSize := runtime.NumCPU()
if 4 < poolSize {
poolSize = 4
if 8 < poolSize {
poolSize = 8
}
i := 0
waitGroup := &sync.WaitGroup{}