虽然也经常关注新技术发展,不过读了 notion 的文章,发现还是有很多新东西
他们用 sqlite wasm 存储数据,据说能提升性能,然后用到了
OPFS 这是浏览器对用户隔离的文件系统,理论上浏览器上可以跑一个 mysql ,用 OPFS 写入 bin 文件
Web Locks 浏览器的资源锁,他们说用这个判断 tab 是否关闭
Comlink 谷歌的一个用于 web worker 数据交互的库,看起来比较好用
这些东西大家用过没?
![]() |
1
daysv 51 天前
indexedDB 够用了,本地客户端用原生 sqlite
|
![]() |
2
bojackhorseman 51 天前
求文章链接
|
![]() |
3
tcper OP |
![]() |
4
tcper OP @daysv 其实我也没懂他们为啥要用 sqlite wasm ,我记得 indexeddb 也是用 sqlite 实现的,可能 sqlite wasm 提供的 api 更多一点
|
![]() |
5
nomagick 51 天前
脱裤放屁,怎不在浏览器里运行 windows xp 然后在在 xp 里面运行 winform 呢
有这功夫直接搞个客户端不行么,钱烧的简直是 |
![]() |
6
bojackhorseman 51 天前
@nomagick 有没有可能人家已经在客户端上做好了,这里说的是在浏览器上的优化。
|
7
Dididadada 51 天前
Comlink 用过,做 webgl 的时候尝试用 offscreencanvas 提升性能,不过本质还是 worker 吧,comlink 就是方便点
|
![]() |
8
wu67 51 天前
浏览器数据库用 indexedb.
sqlite 是存服务器上的. 其他不知道. |
![]() |
9
murmur 51 天前 ![]() 一个笔记而已,再不折腾就到头了,现在都走 AI 了,也就是说开始革笔记的命了,如果 AI 什么都知道什么都会写我为什么要记笔记
|
![]() |
10
nomagick 51 天前
@bojackhorseman 这实在没法叫优化,浏览器上完 sqlite 目的是为了提升性能,就算能提升又能提升多少,还不如坐等明年英特尔出新 CPU ,坐等用户换电脑
浏览器里面有了 sqlite ,过两天程序一更新,怎么还来运行 migration 吗,版本多了又怎办,版本多了我的电脑两个月没用,两个月之前的结构你现在还能提供正确的 migration 吗 我浏览器哪天突然崩溃了 sqlite 数据坏了,这又怎么破,每次启动还来修复一下吗 根本就是一种顾前不顾后的行为,简直抓马 |
11
niubilewodev 51 天前
@nomagick 数据是在服务器上的,浏览器端的 sqlite 应该只是为了缓存,加快渲染速度。
有问题重新同步数据就好了。 |
12
2020diyige 51 天前
前端就是有点走火入魔,路走偏了,,越复杂越难搞懂越好,,门槛越高
|
13
Leviathann 51 天前
browser is the new system
|
![]() |
14
retrocode 51 天前
评论区氛围很奇怪啊, 怎么平常说后端性能优化的时候各个站台这必要那必要的, 到了前端就开始脱裤子放屁没必要了,各个都这么有钱的 all in server 吗
|
![]() |
15
kdwnil 51 天前 via Android
新的发展方向是不断试错试出来的,网页前端搞一大堆花里胡哨的玩意就是希望总能有一个能试对。
用不上不用即可,,这些又不属于必须要有的玩意 |
16
C4D4zRNpq9vFSlJW 51 天前
抱歉 我看错标题了 我反思
|
![]() |
17
qq316107934 51 天前
感谢分享 前端确实有点像个小 OS 了,能做的事情特别多
|
18
paopjian 51 天前
improved page navigation times by 20 percent in all modern browsers
这么一顿折腾提高了 20%的效率,也不知道他们这优化细节是什么,感觉是像是提前缓存所有数据再拿出来 |
19
LuckyLauncher 51 天前
indexeddb 在使用事务时会拖慢速度,这里有篇介绍文章
https://rxdb.info/slow-indexeddb.html 用 sqlite wasm 可能会加快速度,但是收益能不能超过数据序列化带来的性能问题还不好说 然后用 OPFS 去持久化数据库,这我就不太理解了,这一步性能会比较差,原因跟上面文章提到的差不多,浏览器需要进行一系列的安全检查才会写入文件 Comlink 就是封装了一系列方法帮助你序列化传输数据 |
20
LuckyLauncher 51 天前
看了下文章
Web Locks 他们主要是用来实现单例 sqllite ,也就是不管用户打开了多少个 notion 标签,只会有一个 wasm 的 sqlite 跑在用户的电脑上,其他标签页如果需要进行 sql 操作通过 sharedWork 代理实现,这个思路还挺巧妙的 |
![]() |
21
DOLLOR 51 天前
|
22
wetyq 51 天前
这就是我的新 Mac 续航越来越差的原因?
|
![]() |
24
tcper OP @LuckyLauncher 持久化的时候慢也没关系,不影响体验
|
![]() |
25
tcper OP @LuckyLauncher 他们自己发现并发写入文件会出现错乱才解决的,而且用的也不是 sharedworker ,而是 share 一个 worker
|
26
LuckyLauncher 51 天前
@tcper #25 问题是普通 worker 怎么在不同的 tab 之间 share ?这是浏览器的限制
|
![]() |
27
tcper OP @LuckyLauncher 他们说 sharedworker 有问题,改用 share 一个 worker ,应该是 worker 结合 sharedworker 实现的
|
28
LuckyLauncher 51 天前
@tcper 在现阶段的浏览器中要在不同的 tab 中共享 worker 只有 sharedworker 能做到,所以你这里的不是 sharedworker 而是改用 share 一个 worker 本身就有歧义
他们最后还做了总结 The fact that neither variant could be used out of the box is what prompted us to build the SharedWorker architecture described above, which is compatible with either of these SQLite variants. 也提到了 SharedWorker 架构而不是 shared a worker 架构 |
![]() |
29
okcdz 51 天前
OPFS 不同浏览支持器好像都有点问题。Notion 用这个比较激进,我感觉不如 IndexedDB
|
30
pinecone1 51 天前
前端最主要的问题就是能搞得花活儿特别多,然而真正对业务有用的特别少。
除非是那种废墟重建,首屏加载时间从 10 秒变成 2 秒,不然一个加载三四秒的页面优化个 30%首屏时间对业务指标基本屁用没用。 |
![]() |
31
Knights 51 天前
感觉就是用户不想装 APP ,那就把 APP 搬到浏览器上
|
![]() |
32
wildman9527 51 天前 ![]() 看成 "前戏太多" 进来的...
|
33
chuck1in 51 天前
没用 notion ,一直用的一个普通笔记 app
|