2012-06-07 5 views
12

Мы пытаемся оптимизировать наши взгляды и на странице, где 40 фотографий загружаются с помощью следующего кода:Slow 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" 

Мы становимся временем нагрузки 220 мс.

Это означает, что интерполяция s3_path_url происходит очень медленно. Кто-то еще ждет те же проблемы? На данный момент я создал помощник, который генерирует мои URLs:

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

Единственная проблема у меня в том, что ключ кэша не там, а также расширение нет.

+0

Вы были в состоянии найти решение для этого? У нас такая же проблема. Мы используем устаревшие URL-адреса, поэтому не можем их жестко кодировать, как вы. – neebz

+0

@nEEbz на данный момент мы не нашли решения. Мы используем теперь свои URL-адреса с пользовательскими помощниками, и он работает более плавно. – 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 
Смежные вопросы