使用Shopify API加快获取所有产品的速度

时间:2016-02-09 20:00:15

标签: ruby-on-rails ruby redis shopify

现在我是这个代码,用于获取用户存储中所有产品的数组:

# Write loop to get all if more than 1 page
@store_products = []
page = 1

while 1

  products = ShopifyAPI::Product.find(:all, :params => {:limit => 250, :page => page, :fields=> "id,title,images"})

  break if products.length == 0

  products.each do |product|
    @store_products << product
  end

  page = page + 1

end

但是,如果商店有4000多种产品,它会大大减慢应用程序的加载时间,有时会超时。有没有更好的方法来做到这一点。此外,是否可以使用Redis单独缓存产品阵列或产品?这甚至会有益吗?到目前为止,我一直试图通过边际速度改进来做到这一点,如果有的话。

以下是我在视图脚本中的表现:

<% products_to_cache = @store_products.to_json.html_safe %>

<% cache(products_to_cache) do %>
    var products = <%= products_to_cache %>;
<% end %>

1 个答案:

答案 0 :(得分:0)

假设ShopifyAPI通过HTTP,您可以使用typhoeus并行执行外部API调用。

虽然它可能会产生显着的性能提升,但请注意,您无法使用ShopifyAPI客户端 - 您需要使用typhoeus构建请求。< / p>