0
所有產品現在我這個代碼來獲得的所有產品在用戶存儲陣列:加快獲得使用Shopify API
# 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 %>
你絕對不應該在rails應用程序(或任何其他應用程序)中做外部請求同步。將其作爲後臺作業,並在完成後將項目推送到客戶端,或使用cron作業預加載信息。 – Oleander
@Oleander如何在後臺作業中將store_products推到視圖中?假設我正在使用sidekiq。 – Senju
讓後臺作業填充緩存,然後使用websocket將信息推送到客戶端 – Oleander