我正在为我的ratpack应用程序添加Pebble template支持,有一件事困扰我:我的RendererSupport
实例是否应该使用ratpack的Blocking.get()
?由于PebbleEngine拥有自己的缓存,我不知道它是否会从磁盘加载模板源,所以它(可能)是一个IO操作。
看看手柄模板实现我看不到IO操作的任何特殊处理。
所以我的问题是:对于所有潜在的IO绑定操作(例如文件系统或数据库访问)使用Blocking
或者有一些更复杂的规则是否是经验法则?
答案 0 :(得分:1)
如果Pebble的缓存是无限期的(Handlebars' one is),那么我会说你可以像Ratpack的Handlebars集成那样做 - 依赖于缓存并运行代码可以在计算线程上从磁盘加载模板。每次第一次加载模板时,您都会支付性能损失(因为您将在计算线程上运行阻塞代码),但随着缓存覆盖率的增加,它将会消失。
请注意,跟踪器中有an issue,旨在通过预编译模板来消除Handlebars集成的性能损失,从而在启动时填充缓存。