2012-06-07 14 views
12

हम अपने विचारों का अनुकूलन और एक पृष्ठ जहाँ 40 चित्रों निम्न कोड के साथ लोड किया जाता है पर करने की कोशिश कर रहे हैं:धीरे S3 यूआरएल पैदा पेपरक्लिप

= 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

यहां एक ही समस्या है। मैं अब भी अपने यूआरएल उत्पन्न करने में मददगारों का उपयोग कर रहा हूं। – Matt

उत्तर

0

वहाँ हमेशा गैलरी पृष्ठ पर दिखाए गए प्रत्येक उत्पाद का सिर्फ एक छवि है?

क्या अपने डेटाबेस में एक कैश स्तंभ के बारे में। जब भी आप किसी छवि को बनाते या अपडेट करते हैं तो आप अपने डेटाबेस में गैलरी_पिक्चर_यूआरएल के रूप में इस image_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 
संबंधित मुद्दे