2012-06-07 103 views
12

我們正在努力優化我們的意見,並在那裏拍攝40張照片都載有下面的代碼頁:慢S3 URL生成回形針

= 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 

唯一的問題我這裏是高速緩存關鍵是不存在的,也是不延長。

+0

你能找到解決方案嗎?我們遇到同樣的問題。我們使用到期的網址,因此無法像您那樣對其進行硬編碼。 – neebz

+0

@nEEbz目前我們沒有找到任何解決方案。我們現在使用自定義幫助器生成我們的網址,並且運行更流暢。 – SteenhouwerD

+0

這裏的問題相同。我現在也使用助手來生成我的URL。 – Matt

回答

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