开启同步后,思源开启缓慢!提供个思路

开启了云端同步,每次打开思源,都得去扫描很久才能打开!

已经确定了,就是这个云端同步导致的!目前是关闭自动同步,思源可以秒开了!

我有个思路,不知道能不能行!

把扫描对比的这项操作,放在软件打开之后进行!

然后有人说会冲突,那可以在打开软件后,把最近文件优先同步一次!

因为最近文件肯定不多,同步一下,很快!

然后历史文件对比扫描可以放到后台慢慢进行,这样就不影响使用!

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    24541 引用 • 100487 回帖

相关帖子

优质回帖
  • 5kyfkr 2 赞同

    不好整,人类科技短时间内不会有比固态硬盘更快的了,再快的固态也架不住文件数量多全部要跑一遍,或者就考虑动画像游戏启动一样做的优雅点,心理上减少点等待的感觉吧,比如可以选择启动界面图片,像网易云音乐一样之类的,看着自己的喜欢图片肯定会舒服点

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    不太可行,因为不进行对比的话是不知道最近修改了哪些文件的,对比放在启动时就是为了加快整个进度,避免进入界面后还要等待太久。

    可以等下个版本 v3.1.14 再试试,我们做了一些优化 Issue #13216 · siyuan-note/siyuan

    • 并行 数仓索引 和 下载云端快照索引 这两个过程来降低启动时间,在固态盘上测试 1W 个文件且网络良好的情况下大致可以比之前节省 1/3 的启动时间,3K 个文件的情况下大致节省 1/2 的启动时间
    • 数仓索引 时使用更高效的遍历函数 filepath.WalkDir 替换 filepath.Walk,大概可以节省 1/5 的遍历时间
    2 回复
  • 知道最近修改了哪些文件是为了实现什么效果?

    1 回复
  • 88250

    差分同步

    1 回复
  • 能否不考虑关闭期间外部导致的文件变动,只使用最新快照进行差分同步?

    1 回复
  • 88250

    不行的,资源文件很可能会变动,比如外部修改 Word 文件。

    2 回复
  • yl323

    一天打开思源一次,一次开一天,可解决此问题,我就是这样的!我用的还是自己的 NAS 搭建的 webdav

  • 在 pc 端可以挂后台所以慢点也能忍,主要是手机上一定得快,数据仓库索引完了之后还有个载入工作空间(思源大 logo)的时间也要几秒,整个加起来一般最少也要 5 秒进入界面,对于手机 app 还是很难受的,希望能继续优化布局载入时间,这个在电脑端切换布局的时候也会明显觉得慢,当然也可能是我插件和主题用的猛会慢点。

  • 那外部改动 word 会导致同步到本地出问题吗?我感觉使用最后一个快照似乎没影响。

    假如云端快照没更新 word,那 word 不会被覆写。

    假如云端快照更新了 word,那使用更新的 word 覆写本地的 word 也不算离谱,毕竟有历史记录在。

    更新本地的 word 到云端可以在下一次同步进行。

    1 回复
  • 88250

    不索引的话会有问题的,相当于外部改动不进快照,如果云端更新了这种情况就无法判断覆盖方向了,只能云端覆盖本地,并且不会生成冲突历史。

    移动端上可能可以考虑用最后一个快照,因为移动端上不存在外部更新的情况。

    1 回复
  • 云端直接覆盖本地,保留历史记录即可。

    另外我觉得完全可以在覆盖的时候读取文件。

    2 回复
  • 88250 1 评论

    不纳入快照的话没有差异,不会生成冲突历史的,相当于正常云端覆盖本地。

    更新了一下,我觉得完全可以在覆盖的时候读取文件。
    zxhd86
  • 88250

    那数据就无法保证一致性了,快照要保证的一点就是一致性,如果云端覆盖本地时再去判断就晚了,这个时候数据很可能已经变动。

  • 88250

    对了,刚刚我说的移动端用最后一个快照的想法实际上也不会有多大提升……因为慢是慢在加载本地快照(就是界面上出现“正在索引数据仓库,获取最新文件...”),而不是慢在下载索引或者对比差异等,这些在库较大时耗时其实不高,主要就是加载快照比较耗时,因为要读取本地仓库最新快照中的所有文件对象。

    这个点我们得再看看是否还有优化空间,如果代码实现上优化空间不大的话可能就要考虑下用其他结构来辅助一下,总之,我觉得还是有希望提升突破一下的。

    1 回复
  • 能不能在索引这个时候有个按钮可以先进入个速记界面,如果有快速记录的需求可以先记录,等同步完且后台加载好布局了,提示已加载完成,再有个按钮把速记界面切换成文档编辑界面,并把速记内容新建到指定文件夹中。

    或者查看笔记也能启动先预加载上次退出前最后看的那个笔记,然后后台再启动完整布局,等启动完成后再点击切换成完整布局。

    1 回复
  • 88250
    • 这种场景建议用收集箱
    • 最后看的那个笔记也可能需要同步(从云端下载更新),但是不同步之前是无法判断要不要预加载的,这是一个鸡蛋问题
    1 回复
  • 就不管有没有同步都先显示出来,只是能看不能动,等同步完能切换成最新完整布局就行

    1 回复
  • 88250

    实际上现在就是这样的,启动阶段不会真正进行数据交换,只是对比索引,然后决定要锁住哪些文档以避免本地修改和云端造成冲突。

    前面我已经说了,启动慢主要是就是因为要加载最新本地快照,加载以后才能对比索引,加载快照时读取文件对象慢是目前的瓶颈。

    1 回复
  • 5kyfkr 2 赞同

    不好整,人类科技短时间内不会有比固态硬盘更快的了,再快的固态也架不住文件数量多全部要跑一遍,或者就考虑动画像游戏启动一样做的优雅点,心理上减少点等待的感觉吧,比如可以选择启动界面图片,像网易云音乐一样之类的,看着自己的喜欢图片肯定会舒服点

  • bbx

    不是说不对比,我的意思是,做个切割嘛,最近的正常同步,

    历史文件,等软件打开后,再在后台慢慢同步!!

    目前是一个整体的,要全部扫完,可是历史文件大概率用不到。

    还是要放在里面一起扫,这不是浪费时间嘛?

    1 回复
  • 88250

    下个版本再试试吧,做了一些优化了。

    1 回复
  • bbx

    大佬,目前这个逻辑有个最大的问题就是,如果说用户使用年限久了,后期数据量大了,比如索引量会增加,需要扫描对比的文件数量也会逐日增加!!这是显而易见的,你再怎么优化,这个也要去扫本地,然后跟云端对比!

    我认为这个里面还是要做个切割,就像数据库日志切割一样,时间长了,数据库日志的体量会非常庞大,你要查找也非常困难!

    或者说,我提个想法吧,比如某个文档,10 天没有任何操作了,就转入归档笔记,归档文件只在云端保存,平时不进行扫描对比!日常使用的时候,就只同步常用的笔记!

    然后如果担心用户去操作归档笔记,造成数据不一致的问题,也有办法解决!那就是给归档笔记,加个锁,操作之前手动同步一次即可解锁!因为是归档笔记,那么肯定也就是偶尔用下,如果频繁使用,就是常用笔记了!

    3 回复
  • 88250

    本地肯定是要扫描的,不然无法保证数据完整性和一致性。

    你提的方案不太具有可行性,因为就算用户不写入数据,也是需要搜索的,只在云端的话本地无法进行搜索。

    1 回复
  • cup319

    关掉自动同步,改成手动同步

  • salen

    这个就和 s3 差不多,把冷数据和热数据分开

  • 另外,云端是会坏的,只有本地数据能保证安全

  • powehi via macOS

    是否可以进行数据一完整和致性性校验的时候做以下操作

    1. 比对云端和本地快照的优先级
    2. 筛选出优先级最高的快照的改动数据
      1. 如某一端领先另一端多个版本,取多个版本的文件并集
    3. 仅扫描比对筛选的文件
    1 回复
  • 88250

    现在就是这样的逻辑

    2 回复
  • 那如果是启动后先进入一个记录启动后操作更改的沙箱,比对完数据快照后在最新的快照中执行一次操作更改,随后上传是否可行呢?

    1 回复
  • 88250

    每次同步都会对比本地变更数据,然后才执行同步的,快照打过一次就不会再变更数据了。

    1 回复
  • 我可能没表达清楚,我的意思是

    1. 启动后进一个沙箱,
    2. 这个沙箱中的所有数据都是临时的,只用来记录在这个期间做了哪些操作,
    3. 在思源对比完快照,真正进入工作空间后
      1. 按照这个操作步骤在工作空间的文件里执行一次

    这样子是否有可能呢

    1 回复
  • 88250

    沙箱的初始数据从哪里来?

    1 回复
  • ACai 2 评论

    从本地数据来,我知道估计不可能了。

    那启动一个速记页面可行吗?记完了插入到指定日记本的当天日记的底部(这个在设置中预先进行设置)。

    两三秒的时间真的干不了什么
    JeffreyChen 1
    @JeffreyChen 老实说我能接受现在的启动速度,主要是想推一推冲突合并嘿嘿
    ACai
  • wenbocn 1 评论

    可以增加一个功能(可自己启用或取消),指定一个启动主页,这个主页可以是代办事项,可以是速记,可以是自定义的一个文档。启动前,先同步这个主页,同步完成后直接将其显示。然后再慢慢检测同步其它的。不过这样就拖慢整体进度了(也许能并行),不一定人人喜欢。@ACai @88250

    其实当前正常启动就挺好,节奏不用那么着急
    wenbocn 1 赞同
  • FlyingY

    有个想法,打开索引是为了知道哪些文件进行修改后锁定,那么能不能在关闭思源和同步时,把近期修改的文件做一个类似索引表的,比如说近三天或当天修改过的文件都在那个表里(时间可以自定义)。打开时和云端的修改索引表进行加法操作,两个表里的文件都进行锁定同步,结束后修改文件全部存在云端的索引表里,这样哪怕多端使用应该也能全部覆盖修改了。为保险起见,可以在这些同步完成后,索引对比剩下所有的文件。

    1 回复
  • 88250

    现在的逻辑基本就是这样,但是必须要创建快照才行,因为只有快照才能获得增量差异。

    1 回复
  • powehi via macOS

    好 明白啦

  • FlyingY

    要手动标记的快照吗?不是会自动创建快照吗?

    1 回复
  • 88250

    是自动创建的

请输入回帖内容 ...

推荐标签 标签

  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    584 引用 • 3537 回帖
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    76 引用 • 389 回帖
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 639 关注
  • OpenCV
    15 引用 • 36 回帖 • 2 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    409 引用 • 3585 回帖 • 1 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 3 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    493 引用 • 928 回帖
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    12 引用 • 5 回帖 • 631 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 664 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 116 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    152 引用 • 279 回帖
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 588 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 299 关注
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 2 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 397 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 73 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 390 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 684 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 10 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    52 引用 • 190 回帖 • 1 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 493 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 546 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 90 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    143 引用 • 442 回帖 • 2 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1707 回帖