每次有人在生产中点击它时,Rails是否会重新编译整个erb/haml视图?

Sbb*_*bbs 5 haml ruby-on-rails erb ruby-on-rails-4

假设视图是在erb/haml中,但是是静态的(其中没有任何动态部分),Rails是否每次有人点击它时重新编译该视图,或者在有人点击它之后缓存html?

一个跟进问题:如果我有一些动态部分的视图,Rails是否只重新编译视图的动态部分还是重新编译整个页面?

我正在运行Rails 4.

tee*_*tee 6

Rails在每个请求上评估视图文件和部分.这就是html片段缓存非常有价值的原因.

请参阅Rails指南中的使用Rails进行缓存.

通常,您将使用Rails的缓存来缓存html片段,因此不需要在每个请求上重新呈现它.这是Haml的例子:

- cache "key-name-for-static-content" do
  .some-html
    some content
Run Code Online (Sandbox Code Playgroud)

请参阅DHH的基于密钥的缓存过期如何使用模型进行基于密钥的缓存.

对于高级用途,我编写了cache_rocket来帮助缓存部分动态内容周围的静态内容.