【问题标题】:Rails 4.2.1 - Very slow image assets on AJAX callRails 4.2.1 - AJAX 调用上非常慢的图像资源
【发布时间】:2015-06-30 19:16:41
【问题描述】:

我有一个表单,它通过 AJAX 调用来加载一些内容。这会触发这个 JS:

$('#load_search').fadeIn().html("#{escape_javascript(render :partial => 'products/search')}");

在产品/搜索中我有一个简单的循环:

- @products.each do |product|
   %h1= product.name
   = image_tag product.image_url

AJAX 调用大约需要 8 秒来加载 24 个产品!如果我删除 image_tag,它会在 300 毫秒内完成。为什么需要 8 秒?那是因为需要在 ajax 调用完成之前加载资产吗?

【问题讨论】:

  • 你的图片文件有多大?

标签: ruby-on-rails ajax ruby-on-rails-4


【解决方案1】:

尝试查看您的 rails 日志以及 firebug 的 Net 选项卡中的时间。这应该让您了解大部分时间是在获取图像还是通过网络传输它们等等。

我曾经在这样的 ajax 请求中渲染部分内容,但现在我正在转向使用主干并在把手(客户端 JS)模板中渲染记录。您可能会发现这种方法对性能和防止 javascript 和 ruby​​ 相互混淆都有帮助。

【讨论】:

  • 我正在使用 Rails 控制台和 Chrome 开发者。 Rails 控制台告诉视图需要 8 秒,我发现这是因为部分中的 image_tag。它仍然没有解释原因。
  • 我不是在寻找一个快速渲染的解决方案,而是一个可以解释为什么它使用 image_tag 8 s 的答案。我有一个 JS 模板的解决方案,其中 ajax 调用只请求 JSON。
  • JSON 响应是否包含每个产品的 product.image_url?产品/搜索中发生的其他任何事情可以解释它吗?
  • 这不是 JSON 响应,我的示例是 HTML 响应。我刚刚说过我有一个解决这个问题的方法,就是使用 JSON 响应而不是 JS 模板来呈现 HTML。
  • 这是正确的,因为 Rails 在开发模式下会即时预编译所有资产
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
  • 2016-05-11
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 1970-01-01
相关资源
最近更新 更多