Skip to content
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

需求:增加收集持久化功能,解决耗时过长网页崩溃数据丢失问题。 #14

Open
LYZ10 opened this issue Apr 7, 2024 · 9 comments
Labels
enhancement New feature or request

Comments

@LYZ10
Copy link

LYZ10 commented Apr 7, 2024

你好,书签收藏推文过多时,容易出现网页崩溃问题,这样会浪费大量的时间及重复操作,希望可以增加持续收集或者间接保存功能来规避这个问题,使得在使用时能够更高效。非常感谢您开发这个这么有帮助的插件,祝一切都好。
问题截图:
image
不知道数据达到多少条会奔溃,测试过一般在1000条后,网页奔溃后网页刷新又会回到第一条,出现这个后人也会很奔溃,哈哈哈。真的很想一次性就把书签导出干净,辛苦你啦,谢谢!

@prinsss prinsss added the enhancement New feature or request label Apr 7, 2024
@bxb100
Copy link

bxb100 commented Apr 11, 2024

有没人弄,没人弄我想弄弄

@prinsss
Copy link
Owner

prinsss commented Apr 11, 2024

@bxb100 我目前打算使用 IndexedDB 做持久化(类似本项目前身 export-twitter-following-list),不过这会涉及到一些底层变更,咱们可以交流下。如果你也有兴趣,欢迎一起完善!

主要的变更点:

  1. 需要在 Interceptor 中把所有抓取到的数据保存到 IDB 中(按模块分表)。
  2. 把现在的 global store Signal 改成数据库中的行数(有新增时,需要响应式更新 UI)。
  3. 提供清除数据库和导出数据库的选项。
  4. 注意数据存入 IDB 后不要继续持有引用,防止上述的内存占用无限膨胀问题。
  5. 最重要也是最麻烦的一点,需要把 TanStack Table 改造成 server-side pagination/filtering/ordering。

因为目前所有数据都是塞在内存里的,所以直接全量前端分页处理分页展示就行了。如果改成 IDB 存储,就需要改造一下表格预览中的分页、搜索、排序方法。

@bxb100
Copy link

bxb100 commented Apr 11, 2024

@prinsss 我也是打算用 indexedDB 来做(刚学 =。= 所以没细看你说的 edge case),先开个分支做起来吧

@JunkoJk
Copy link

JunkoJk commented Apr 15, 2024

Hi,谢谢大佬制作工具,这边尝试导出总3k+的账号推文,也是1k左右就卡住报错了,重新加载也没有用,找过来发现已经有类似问题(虽然是书签),于是想补充一下例子👇再次感谢,期待优化,谢谢!
image

@prinsss
Copy link
Owner

prinsss commented Apr 15, 2024

@LYZ10 @JunkoJk

可以试试我刚发的 1.2.0-alpha.1 测试版,新增支持了本地数据库持久化,现在即使刷新页面也不会丢失已抓取到的数据了。我自测下来加载 1000 条数据,内存占用没有明显波动。

不过表格预览界面的分页还没时间做,点击预览按钮后会吃一波内存……应该不至于会崩溃,如果有问题继续反馈吧。


@bxb100 我目前正在 idb 分支上开发。

@prinsss
Copy link
Owner

prinsss commented Apr 15, 2024

Hi,谢谢大佬制作工具,这边尝试导出总3k+的账号推文,也是1k左右就卡住报错了,重新加载也没有用,找过来发现已经有类似问题(虽然是书签),于是想补充一下例子👇再次感谢,期待优化,谢谢!

从你这图中的报错看,有可能是另外的问题。可以参考一下 #1 中的排查方法,提供具体的错误日志方便定位问题。

@LYZ10
Copy link
Author

LYZ10 commented Apr 15, 2024

@LYZ10 @JunkoJk

可以试试我刚发的 1.2.0-alpha.1 测试版,新增支持了本地数据库持久化,现在即使刷新页面也不会丢失已抓取到的数据了。我自测下来加载 1000 条数据,内存占用没有明显波动。可以试试我刚发的 1.2.0-alpha.1 测试版,新增支持了本地数据库持久化,现在即使刷新页面也不会丢失已抓取到的数据了。 我自测下来加载 1000 条数据,内存占用没有明显波动。

不过表格预览界面的分页还没时间做,点击预览按钮后会吃一波内存……应该不至于会崩溃,如果有问题继续反馈吧。不过表格预览界面的分页还没时间做,点击预览按钮后会吃一波内存…… 应该不至于会崩溃,如果有问题继续反馈吧。

@bxb100 我目前正在 idb 分支上开发。

收到收到,我试试哈。

@JunkoJk
Copy link

JunkoJk commented Apr 16, 2024

Hi,谢谢大佬制作工具,这边尝试导出总3k+的账号推文,也是1k左右就卡住报错了,重新加载也没有用,找过来发现已经有类似问题(虽然是书签),于是想补充一下例子👇再次感谢,期待优化,谢谢!

从你这图中的报错看,有可能是另外的问题。可以参考一下 #1 中的排查方法,提供具体的错误日志方便定位问题。

尝试了新版,很神奇的是直接读取还是会卡在1000左右,于是想开着控制台看是哪里出错,结果顺顺利利划完了3k+,再次感谢!

@prinsss
Copy link
Owner

prinsss commented Apr 16, 2024

尝试了新版,很神奇的是直接读取还是会卡在1000左右,于是想开着控制台看是哪里出错,结果顺顺利利划完了3k+,再次感谢!

哈哈哈😂,那你有时间可以试试开着控制台刷 1000 条,看看还会不会报错。如果这是一个共性问题,那我可以一起修复掉,如果不能复现那就算啦。

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

No branches or pull requests

4 participants