FSpark 2022年07月21日 16:13
许多用户认为转到Node.js性能便能得到大幅提升,在这先打碎各位的幻想,缕一缕Node.js模式下的几点误区:
- 仍是全文加载
- 你所想象的REST交互的B/S模式在初次加载时并不成立
- 优雅的即用即取是懒加载模式(Lazyload)
- 只是同步方便
- 附件会全部读进内存
- 在Node.js模式下存储的二进制文件都是Base64编码后存进.tid里的
- 生成的时候会全部读进内存环境,浏览器内也是
- Base64编码是原始二进制编码文件大小的4/3
但我们还是有办法去优化,下面请看:
附件使用引用链接
使用_canonical_uri,这样就换成浏览器去请求这一地址,而不是一开始就包含整个文件。
使用Gzip,开启缓存化
gzip=yes use-browser-cache=yes
Gzip能压缩传输流,尤其对与TiddlyWiki这样的纯文本,能大幅减小文件大小。开启浏览器缓存可以使浏览器不用每次都请求完整的文件。
外置Core缓存
是的,你没看错,由于TiddlyWiki的微内核架构,保留启动模块,我们可以将整个内核外部化为一个js文件,得益于浏览器缓存,我们就可以省去每次都从服务器获取一遍。
Using the external JavaScript template
外置插件缓存
Lazyload
注意:懒加载后由于没有加载全文进内存,所以无法在浏览器中全文搜索。
ServiceWorker
上面提到的外置缓存虽然是缓存了,但之后的访问还是需要再先向服务器确认一遍,为了免除这一时延,我们可以使用ServiceWorker来进行本地缓存。应用之后程序会直接加载本地缓存,之后再在后台更新最新的内核框架。
由于是通过workbox对生成后的静态文件进行的Hash来确定文件是否更新,所以在Node.js中因为响应都是动态的反而行不通,但作为发布中的一环也拿来讲了。
https://wiki.onetwo.ren/#%24%3A%2Fplugins%2Flinonetwo%2Fservice-worker