asset_path / image_path很慢

时间:2015-10-07 12:29:59

标签: ruby-on-rails actionview

在我的html中,我有这个部分,我想渲染x1000:

<div data-image-url="<%= image_path("placeholders/#{object.placeholder_name}") %>"></div>

结果很慢,每次视图渲染在5到40ms之间,因此&gt;整页15秒:

  ...
  Rendered default_services/_default_service.html.erb (15.6ms)
  Rendered default_services/_default_service.html.erb (7.0ms)
  Rendered default_services/_default_service.html.erb (5.9ms)
  Rendered default_services/_default_service.html.erb (7.2ms)
  Rendered default_services/_default_service.html.erb (8.7ms)
  Rendered default_services/_default_service.html.erb (6.0ms)
  Rendered default_services/_default_service.html.erb (10.3ms)
  Rendered default_services/_default_service.html.erb (9.4ms)
  Rendered default_services/_default_service.html.erb (5.7ms)
  Rendered default_services/_default_service.html.erb (5.4ms)
  Rendered default_services/_default_service.html.erb (38.5ms)
  Rendered default_services/_default_service.html.erb (9.0ms)
  Rendered default_services/_default_service.html.erb (9.8ms)
  Rendered default_services/_default_service.html.erb (6.8ms)
  Rendered default_services/_default_service.html.erb (5.7ms)
  Rendered default_services/_default_service.html.erb (7.9ms)
  Rendered default_services/_default_service.html.erb (8.0ms)
  Rendered default_services/_default_service.html.erb (6.0ms)
  Rendered default_services/_default_service.html.erb (5.6ms)
  ...

(当我注释掉'image_path'时,每个视图渲染为0.1或0.2ms。)

=&GT;是否有可能使“image_path”更快,(除了使用缓存)?

(我最终缓存了整个事情,总的1000x渲染时间是<10ms,但仍然在想)

2 个答案:

答案 0 :(得分:1)

开发模式中是否出现问题?只有图像?

通常开发服务器是webrick,这有问题。 尝试将webrick更改为其他服务器(例如thin)。

您也可以关闭调试模式:

# development.rb
config.assets.debug = false

答案 1 :(得分:1)

当rails在开发模式下运行时,所有资产都是独立提供的,并且它们是从app / assets文件夹中获取的。这是由链轮完成的,因此可以在网页中立即看到对原始资产的修改。在生产中,资产将移动到公共文件夹。

我不确定这是问题的原因,但你可以通过禁用资产degub模式试一试:

 config.assets.debug = false

让我知道这是否有帮助。