2017-06-15 13 views
4

例如,我叫了三谐音在我的食谱/ _cuisines.html.erb文件:Ruby on Rails:为什么在我的视图中调用局部渲染会花费很长时间?

<%= render "recipes/cuisines/denmark.html %> 
    <%= render "recipes/cuisines/spain.html %> 
    <%= render "recipes/cuisines/italy.html %> 

东西都不是在该文件中。部分只是静态内容,没有集合。这是我从我的日志中获取:

Rendered recipes/cuisines/_denmark.html.erb (4.6ms) [cache miss] 
    Rendered recipes/cuisines/_spain.html.erb (2.3ms) [cache miss] 
    Rendered recipes/cuisines/_italy.html.erb (5.3ms) [cache miss] 
    Rendered recipes/_cuisines.html.erb (161.5ms) [cache miss] 

如果我删除谐音之一,我得到的是这样的:

Rendered recipes/cuisines/_denmark.html.erb (4.6ms) [cache miss] 
    Rendered recipes/cuisines/_spain.html.erb (2.3ms) [cache miss] 
    Rendered recipes/_cuisines.html.erb (101.7ms) [cache miss] 

取出另一部分,我得到:

Rendered recipes/cuisines/_denmark.html.erb (4.6ms) [cache miss] 
    Rendered recipes/_cuisines.html.erb (50.5ms) [cache miss] 

删除每一个部分,我得到这样的事情:

Rendered recipes/_cuisines.html.erb (0.9ms) [cache miss] 

看来,它需要一个非常时期,从而使得各部分即使部分本身是非常小的。你知道是什么原因导致的,我能做些什么来更快地调用偏好函数?建议不要叫部分吗?

(我用Rails 5.1.1和Ruby 2.5.0dev)

回答

2

我相信你已经粘贴从开发环境日志。 如果是这样的话,那是因为config.cache_classes这是默认false发展和true用于在轨道导轨提到测试和生产环境。

config.cache_classes控制是否应在每个请求上重新加载应用程序类和 模块。在 开发模式中默认为false,在测试和生产模式下为true。

config.action_view.cache_template_loading控制是否 模板应在每个请求重新加载。默认为 为config.cache_classes设置的值。

我建议在testproduction环境中运行的应用程序,然后检查日志。

+0

我不知道它会如此简单:)非常感谢普拉莫德! – sjsc

相关问题