Skip to content

嵌入块当原块被删除时,保留缓存 #4071

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
HowcanoeWang opened this issue Feb 19, 2022 · 16 comments
Closed

嵌入块当原块被删除时,保留缓存 #4071

HowcanoeWang opened this issue Feb 19, 2022 · 16 comments

Comments

@HowcanoeWang
Copy link

HowcanoeWang commented Feb 19, 2022

在什么情况下你需要该特性? In what scenarios do you need this function?

有时候无心的操作(缩进移动剪切之类的),然后别的地方块引用,不知道原来的内容是什么,非常郁闷
image

描述可能的最优解决方案 Describe the optimal solution

建议在数据库中,删除的块依旧保留内容,但设置为只读属性

或者对每一个引用块,提供一个最新的缓存数据,如果原块找不到了,就加载最新的缓存内容,方便定位重新梳理

@88250
Copy link
Member

88250 commented Feb 20, 2022

数据库中的块还是只能删除,否则重建索引时无法判断是否已经是删除数据。

引用的话会保留锚文本,但是嵌入不行。我关闭了,感谢反馈。

@88250 88250 closed this as completed Feb 20, 2022
@HowcanoeWang
Copy link
Author

给块增加一个meta属性?deleted=True来表明已经删除了?

@88250
Copy link
Member

88250 commented Feb 20, 2022

重建索引时会清空数据库的。

@HowcanoeWang
Copy link
Author

嗯,还是希望未来版本能考虑一下,如何实现所有的编辑变化都可追溯,不差那点文本存储空间(,,•́ . •̀,,)

@88250
Copy link
Member

88250 commented Feb 20, 2022

估计只能靠历史了。

@HowcanoeWang
Copy link
Author

现在的笔记本历史翻起来也有点麻烦,也希望能增加一个单独页面变化历史,甚至某一个块的历史😂
要求有点多,希望思源越办越好😘

@HowcanoeWang
Copy link
Author

估计只能靠历史了。

今天遇到一个上古的笔记,历史里也找不回当时的内容块是什么了😨感觉这个笔记彻底丢了

@88250
Copy link
Member

88250 commented Mar 22, 2023

多半是 ID 变化了。

@HowcanoeWang
Copy link
Author

HowcanoeWang commented Mar 22, 2023

多半是 ID 变化了。

还是希望能在这种情况下,保留一个影子缓存,在这种找不到块而且自己完全没头绪的情况下,还是能知道之前的内容是什么

技术上或许可以通过增加一个cache字段来储存缓存的信息 (仅限单个块的嵌入/引用 #7096,多个SQL块过滤有可能因为结果过多,可以考虑不用缓存)?

			"Type": "NodeBlockQueryEmbed",
			"Properties": {
				"id": "...",
				"updated": "20230322120305"

				"cache": [...]
			},

			"Type": "NodeParagraph",
			"Properties": {
				"id": "...",
				"updated": "20230322120903"

                                "cache": [...]
			},

为了节省空间,可以简单的储存一下纯文本信息即可

@88250
Copy link
Member

88250 commented Mar 22, 2023

这样缓存的话显示不出来的,嵌入块查询必须满足块结构,另外,更新缓存也是个问题。

@HowcanoeWang
Copy link
Author

HowcanoeWang commented Mar 22, 2023

这样缓存的话显示不出来的,嵌入块查询必须满足块结构,另外,更新缓存也是个问题。

意思是,当出现“不存在符合条件的块”这种情况时,在后面把cache中的内容补充显示

image

只缓存创建时和手动更新后的状态(相当于对创建时状态的简单记录)

  1. 切入块生成的时候就制作一个缓存。
  2. 或手动点击块右上角刷新按钮时,也更新缓存。
  3. (可选)打开页面,渲染出块内容时,也更新缓存。
  4. (可选)手动触发,强制更新所有嵌入块的缓存(功能上线后的初始化,或用户备份需要等)
  5. 除此之外不更新缓存,原块被修改时也不进行改动。

@88250
Copy link
Member

88250 commented Mar 22, 2023

哦,也许可行,但是实现改动有点多,还需要收集更多反馈看下是否有必要。

@HowcanoeWang
Copy link
Author

HowcanoeWang commented Mar 22, 2023

哦,也许可行,但是实现改动有点多,还需要收集更多反馈看下是否有必要。

个人感觉这个功能还是挺重要的,因为目前块的剪切移动还是比较容易造成块id的变化导致的内容丢失。有了这个缓存相当于提供了一个手动搜索对应内容的线索

@88250
Copy link
Member

88250 commented Mar 22, 2023

嗯,有道理,但得看我们后面看是否有空实现了,如果你有空也可以试下 PR。

@TCOTC
Copy link
Contributor

TCOTC commented Mar 10, 2024

我也需要

@cordinGH
Copy link

+1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants