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

轮换式路由集群 #2

Open
otakustay opened this issue Sep 7, 2016 · 1 comment
Open

轮换式路由集群 #2

otakustay opened this issue Sep 7, 2016 · 1 comment

Comments

@otakustay
Copy link

otakustay commented Sep 7, 2016

这一功能用在预加载方面有奇效

  1. 定义抽象的路由生命周期,重点是将一个路由的目标的生命周期分隔为渲染前渲染这两个阶段
  2. 一个集群中包含多个路由实例,其中永远只有一个处于渲染状态,称为前端实例,其它称为后端实例
  3. 后端实例可用于命令式地接受一个新的路由,其功能是根据路由找到对应的模块,执行渲染前阶段的逻辑,但不渲染,这个逻辑包含了初始化、数据加载等一系列工作,然后这个状态被保存下来
  4. 当实际URL变化时,路由集群会试图查看后端路由里是否有一个与当前的URL配对,如果配对的知,把这个路由提上来作为前端路由,立即执行渲染这个阶段的工作,因为之前作为后端路由时已经完成了渲染前的所有工作,因此可以非常快速地出界面
  5. 此时原来的前端路由状态被清空,放进后端路由池中等待指令

可以通过配置后端路由的数量来控制可并行的预加载的量,使用不同的淘汰策略来确保预加载的命中率

@otakustay
Copy link
Author

这一功能与san-router最初的“只负责URL到函数,不负责定义任何生命周期”的初衷是有矛盾的,但是这确实是当前路由系统中存在的一个缺失,有很大的优化空间和投入价值,也是san-router将会有的一大特色和优点,配合之后不同的自动判断预加载的工具(如判断鼠标轨迹与<a>元素等)形成体系有助于竞争力

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

No branches or pull requests

1 participant