我假设是的,一些测试指向是的,但我想找到说 Rails 在内存中缓存(未评估)模板的文档。
也就是说,对于任何.erb
、.sass
、.jbuilder
等模板,Rails 将:
- 从文件中读取模板,仅读取一次
- 需要时从内存中检索模板
- 在每次调用时将数据应用于模板,除非缓存生成的输出。
所有模板/缓存搜索和文档似乎都集中在第 #3 点上。开发 Rails 标志启用/禁用类缓存。但是找到验证声明 #1/#2 的文档似乎是虚幻的。Rails 是否每次都重新读取模板文件并依赖操作系统级别的文件缓存?
我有同样的问题,做了一些狩猎。
是 - Rails 缓存模板。
请注意缓存将局部变量作为键的事实,然后我会说未计算的模板不会被缓存。
在生产环境中,如果您添加调用来执行此操作,则会这样做。 它在开发模式下被禁用,但是您可以通过将以下行从 false 更改为 true,将其编辑为在开发中缓存以及 config/environment/development.rb 文件中:
config.action_controller.perform_caching = false
在生产中,Rails 在视图方面有 3 种主要的缓存方法(也有用于数据库缓存的 rails 方法)。 页面缓存、操作缓存和片段缓存。 要在 Rails 中实现这些,您可以使用某些帮助程序,例如控制器中的 caches_page
宏样式方法。 这会将视图完整地缓存到磁盘上,而 Rails 调度程序不会进一步参与。仅当页面完全静态且没有动态内容时,才应使用此方法。 caches_action
和片段缓存提供了更细粒度的实现,并且可能构成了Rails中的大部分用例。