我有一個電子商務Rails應用程序,我們需要輸出客戶在過去一年內在頁面上放置的訂單,以便報告原因。現在,數據集非常大,並且在單個頁面上顯示這些訂單需要相當多的SQL處理。這個任務最初非常緩慢,因此我將所有必需的訂單詳細信息移到了Redis服務器上,現在數據的獲取變得非常快,但我們仍然沒有完成。改善鋼軌視圖渲染的性能
下面是我們所擁有的:
Rendered **path**/sales_orders.html.haml within layouts/admin (39421.1ms)
Completed 200 OK in 44925ms (Views: 39406.8ms | ActiveRecord: 417.2ms)
應用程序託管在Heroku上,如果一個請求花費超過30秒就被殺死。正如你所看到的,我們遠遠超過了這個限制。大部分時間都在渲染視圖時丟失了。
該頁面包含一個日期篩選器,用戶可以從中選擇要從中選擇訂單的日期範圍。因此,緩存不是理想的解決方案,因爲日期範圍可能每次都會更改。
任何想法如何做到這一點?
Redis的鍵格式(以下是Redis的哈希):
orders:2012-01-01:123
orders:yyyy-mm-dd:$order-id
用戶提供一個簡單的日期範圍,我得到的訂單命名空間下該日期範圍內的所有鍵。
下面我將如何獲得客戶名稱,例如從Redis的命令鍵:
= REDIS.hget(order_key, "customer_name")
提示1:使用分頁 –
謝謝奧斯卡,其中一個驗收標準是不使用分頁 –
那麼如果標準不使用分頁,那麼標準是它不起作用。爲了呈現44個視圖,必須在其上顯示大量的數據。這對客戶來說也很難,因爲他們的瀏覽器必須渲染巨大的頁面。您能否讓我們知道我們在此頁面上討論了多少條記錄?你的視圖代碼是什麼樣的?我只是覺得你不能指望任意的大型查詢總是快速顯示而沒有分頁或限制。 –