3

我有一個Rails應用程序,它使用Google Cloud Storage來存儲圖像。每個視圖大約有8個圖像,當用戶嘗試加載頁面時,由於對GCS的請求,完成時間超過5秒。使用Paperclip和Rails Google雲存儲請求速度很慢

請求由回形針用下面的配置提出:

config.paperclip_defaults = { 
    storage: :fog, 
    fog_credentials: { 
    google_storage_access_key_id: myAccessKey, 
    google_storage_secret_access_key: mySecretKey, 
    provider: 'Google' 
    }, 
    fog_public: true, 
    fog_directory: 'mybucket' 
} 

在我看來,我呼籲每個圖像是這樣的:

<%= image_tag myAsset.image.url %> 

有沒有更快的方法來達到同樣的效果?

懶惰負載似乎是一種解決方法,而不是解決方案,我是我錯了嗎?

這裏New Relic的臭名昭著的分析(綠色屬於谷歌雲存儲服務請求)

enter image description here

+0

GCS資源有多大?這只是一個圖像?桶的類標準,DRA還是近線? –

+0

每個視圖都有大約8個圖像,每個大約有300kb。然後這個桶是一個_standard_之一。 –

+0

因此,如果加載圖像需要5秒鐘,並且頁面上有8個300kb圖像,則大約爲480kbps。有很多互聯網用戶的互聯網速度受限於此。你知道有問題的用戶的互聯網有多慢嗎? –

回答

1

對於給定的請求圖像被拉從後端每一次?如果是這樣,請爲圖片使用緩存,這樣您只需要在第一個請求上點擊時間即可。甚至可能在用戶認證進入懶惰加載之後像你所建議的那樣開始將圖像拖入緩存。

+1

嗨@melgart,我發現緩慢是由於回形針和它產生網址的方式。你可以在這裏找到更多:https://github.com/thoughtbot/paperclip/issues/2337 –

+0

不錯!感謝您將這些知識帶回到每個人都可以看到您的解決方案的地方。你可能會在稍後保存一些小時。 –

0

我不能說這是把所有東西都分類出來,但至少它加快了速度。

fog_host似乎避免了網絡請求。

# config/application.rb 
module Parasite 
    class Application < Rails::Application 

    config.paperclip_defaults = { 
     fog_host: 'http://mybucektname.storage.googleapis.com', 
     # ... other options 
    } 

    end 
end 

如果你想挖掘更多的檢查the code或此線程我在Paperclip Github Page打開。