Browse Source

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

Liang Ding 2 năm trước cách đây
mục cha
commit
b6e6c35f9f
2 tập tin đã thay đổi với 10 bổ sung1 xóa
  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
 		return
 	}
 	}
 	ret = &block
 	ret = &block
+	putBlockCache(ret)
 	return
 	return
 }
 }
 
 

+ 9 - 1
kernel/sql/cache.go

@@ -23,7 +23,9 @@ import (
 	"github.com/88250/lute/ast"
 	"github.com/88250/lute/ast"
 	"github.com/88250/lute/parse"
 	"github.com/88250/lute/parse"
 	"github.com/dgraph-io/ristretto"
 	"github.com/dgraph-io/ristretto"
+	"github.com/jinzhu/copier"
 	gcache "github.com/patrickmn/go-cache"
 	gcache "github.com/patrickmn/go-cache"
+	"github.com/siyuan-note/logging"
 )
 )
 
 
 var memCache, _ = ristretto.NewCache(&ristretto.Config{
 var memCache, _ = ristretto.NewCache(&ristretto.Config{
@@ -50,7 +52,13 @@ func putBlockCache(block *Block) {
 	if disabled {
 	if disabled {
 		return
 		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) {
 func getBlockCache(id string) (ret *Block) {