现在我是这个代码,用于获取用户存储中所有产品的数组:
# 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 %>
答案 0 :(得分:0)
假设ShopifyAPI通过HTTP,您可以使用typhoeus并行执行外部API调用。
虽然它可能会产生显着的性能提升,但请注意,您无法使用ShopifyAPI
客户端 - 您需要使用typhoeus
构建请求。< / p>