在ratpack中加载和编译模板:阻塞与否?

时间:2016-10-21 22:31:56

标签: ratpack pebble

我正在为我的ratpack应用程序添加Pebble template支持,有一件事困扰我:我的RendererSupport实例是否应该使用ratpack的Blocking.get()?由于PebbleEngine拥有自己的缓存,我不知道它是否会从磁盘加载模板源,所以它(可能)是一个IO操作。 看看手柄模板实现我看不到IO操作的任何特殊处理。

所以我的问题是:对于所有潜在的IO绑定操作(例如文件系统或数据库访问)使用Blocking或者有一些更复杂的规则是否是经验法则?

1 个答案:

答案 0 :(得分:1)

如果Pebble的缓存是无限期的(Handlebars' one is),那么我会说你可以像Ratpack的Handlebars集成那样做 - 依赖于缓存并运行代码可以在计算线程上从磁盘加载模板。每次第一次加载模板时,您都会支付性能损失(因为您将在计算线程上运行阻塞代码),但随着缓存覆盖率的增加,它将会消失。

请注意,跟踪器中有an issue,旨在通过预编译模板来消除Handlebars集成的性能损失,从而在启动时填充缓存。