所有惯例申请都用 universal engine 渲染:
Index 是动态页面,还得从 browser 文件夹里的资源登程:
读取视图实例:
拿到的 view 实例:
依据申请实例拿到其 key:
出现的页面保留在内存中,以便在下次申请时提供服务。如果 cache
设置为 false
,则一旦胜利返回第一个胜利响应,响应就会被驱赶。
OptimizedSsrEngine
默认申请的 key 就是 originalURL:/
去 cache 里查找这个 / 之前曾经渲染过了吗?
RenderingCache 里保护了一个 Map:
判断是否应该渲染以后申请:
既没有正在渲染,也没有达到并发下限,渲染策略不是 CSR,则 shouldRender 返回 true:
优化引擎计数器 currentConcurrency 加一。
而后查看 shouldTimeout:如果传入了 timeout 值,才会 timeout:
例如 timeout 为 7 秒,则 7 秒后,执行 fallbackToCSR,那么 7 秒内实现渲染呢?
在 map 里设置一个 key 为 / 的标记位,注明其正在渲染:
开始调用 expressEngine 进行渲染:
renderOptions:
渲染完了之后,输入的 html,传入到应用程序提供的 callback 里:
更多 Jerry 的原创文章,尽在:” 汪子熙 ”: