This page is part of a static HTML representation of the TiddlyWiki at https://wiki.fspark.me/#TiddlyWiki Node.js 传输优化

此页面为TiddlyWiki生成的部分静态网页,全站请访问 https://wiki.fspark.me/#TiddlyWiki Node.js 传输优化

TiddlyWiki Node.js 传输优化

FSpark 2022年07月21日 16:13

许多用户认为转到Node.js性能便能得到大幅提升,在这先打碎各位的幻想,缕一缕Node.js模式下的几点误区:

  1. 仍是全文加载
    • 你所想象的REST交互的B/S模式在初次加载时并不成立
    • 优雅的即用即取是懒加载模式(Lazyload)
  2. 只是同步方便
  3. 附件会全部读进内存
    • 在Node.js模式下存储的二进制文件都是Base64编码后存进.tid里的
    • 生成的时候会全部读进内存环境,浏览器内也是
    • Base64编码是原始二进制编码文件大小的4/3

但我们还是有办法去优化,下面请看:

附件使用引用链接

使用_canonical_uri,这样就换成浏览器去请求这一地址,而不是一开始就包含整个文件。

使用Gzip,开启缓存化

gzip=yes use-browser-cache=yes Gzip能压缩传输流,尤其对与TiddlyWiki这样的纯文本,能大幅减小文件大小。开启浏览器缓存可以使浏览器不用每次都请求完整的文件。

ListenCommand

外置Core缓存

是的,你没看错,由于TiddlyWiki的微内核架构,保留启动模块,我们可以将整个内核外部化为一个js文件,得益于浏览器缓存,我们就可以省去每次都从服务器获取一遍。

Using the external JavaScript template

外置插件缓存

Lazyload

Lazyload

注意:懒加载后由于没有加载全文进内存,所以无法在浏览器中全文搜索。

ServiceWorker

上面提到的外置缓存虽然是缓存了,但之后的访问还是需要再先向服务器确认一遍,为了免除这一时延,我们可以使用ServiceWorker来进行本地缓存。应用之后程序会直接加载本地缓存,之后再在后台更新最新的内核框架。

由于是通过workbox对生成后的静态文件进行的Hash来确定文件是否更新,所以在Node.js中因为响应都是动态的反而行不通,但作为发布中的一环也拿来讲了。

https://wiki.onetwo.ren/#%24%3A%2Fplugins%2Flinonetwo%2Fservice-worker