2

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

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

4

1 回答 1

2

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

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

于 2016-11-03T22:04:50.057 回答