缓慢的s3 url生成回形针

问题描述 投票:12回答:1

我们正在尝试优化视图,并在页面上加载40张图片,并附有以下代码:

= image_tag(product.pictures.first.data.url(:gallery))

如果将其更改为以下代码,我们的加载时间为840ms:

= image_tag("http://bucketname.s3.amazonaws.com/products/#{product.pictures.first.id}/gallery.jpg?1325844462"

我们变成了220ms的加载时间。

这意味着s3_path_url的插值非常慢。有人期待着同样的问题吗?目前,我创建了一个帮助程序来生成我的网址:

def picture_url(picture, style)
  "http://bucketname.s3.amazonaws.com/products/#{picture.id}/#{style}.jpg"
end

我唯一的问题是缓存键不存在,扩展名也不存在。

performance ruby-on-rails-3 paperclip string-interpolation
1个回答
0
投票

图库页面上显示的每种产品总是只有一张图像吗?

关于数据库中的高速缓存列。每当您创建或更新图像时,都可以将此image_url另存为gallery_picture_url在数据库中,并直接像

那样调用它
= image_tag(product.gallery_picture_url)

class Product < ActiveRecord::Base
  after_commit: :update_gallery_picture_url

  def update_gallery_picture_url
    self.update(gallery_picture_url: self.pictures.first.data.url(:gallery)) if self.gallery_picture_present?
  end

  def gallery_picture_present?
    (self.pictures.first.data.url(:gallery) rescue false).present?
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.