Просмотр исходного кода

:zap: 改进块引搜索性能 Fix https://github.com/siyuan-note/siyuan/issues/6655

Liang Ding 2 лет назад
Родитель
Сommit
b6e6c35f9f
2 измененных файлов с 10 добавлено и 1 удалено
  1. 1 0
      kernel/sql/block_query.go
  2. 9 1
      kernel/sql/cache.go

+ 1 - 0
kernel/sql/block_query.go

@@ -502,6 +502,7 @@ func scanBlockRow(row *sql.Row) (ret *Block) {
 		return
 	}
 	ret = &block
+	putBlockCache(ret)
 	return
 }
 

+ 9 - 1
kernel/sql/cache.go

@@ -23,7 +23,9 @@ import (
 	"github.com/88250/lute/ast"
 	"github.com/88250/lute/parse"
 	"github.com/dgraph-io/ristretto"
+	"github.com/jinzhu/copier"
 	gcache "github.com/patrickmn/go-cache"
+	"github.com/siyuan-note/logging"
 )
 
 var memCache, _ = ristretto.NewCache(&ristretto.Config{
@@ -50,7 +52,13 @@ func putBlockCache(block *Block) {
 	if disabled {
 		return
 	}
-	memCache.Set(block.ID, block, 1)
+
+	cloned := &Block{}
+	if err := copier.Copy(cloned, block); nil != err {
+		logging.LogErrorf("clone block failed: %v", err)
+		return
+	}
+	memCache.Set(cloned.ID, cloned, 1)
 }
 
 func getBlockCache(id string) (ret *Block) {