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打开。