使用Paperclip和Rails,Google Cloud Storage请求速度很慢
我有一个Rails应用程序,它使用Google云端存储来存储图像。 每个视图大约有8个图像,当用户尝试加载页面时,由于对GCS的请求,完成所需的时间超过5秒。
Paperclip通过以下配置发出请求:
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' }
在我看来,我用这种方式调用每个图像:
有没有更快的方法来实现相同的结果?
懒惰负载在我看来是一个解决方法而不是解决方案,我错了吗?
这里New Relic臭名昭着的分析(绿色属于谷歌云存储请求)
是每次从后端拉出的给定请求的图像? 如果是这样,请为图像使用缓存,这样您只需花费第一个请求的时间。 甚至可能在用户auth的延迟加载后开始将图像拉入缓存,就像你建议的那样。
我不能说这样可以解决所有问题,但至少可以加快速度。
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
如果你想挖掘更多,请检查我在Paperclip Github页面上打开的代码或此线程。