[英]Displaying very large amount of records at once in Rails on Heroku
我有超過6000個具有多個關聯的用戶行,每行顯示超過15列。
每當我調用此動作進行檢索時,Heroku似乎會在一段時間后拒絕處理並停止。
我嘗試過find_each
但這似乎沒有用,所以我用RedisToGo
設置了Resque
。
它似乎與其他查詢一起使用,這對於創建和更新大量記錄特別有用,但我如何有效地將其顯示給用戶?
我是否只是使用像Resque Status
這樣的東西來顯示currently processing
的頁面上的用戶的狀態然后在它准備好時顯示?
現實世界的應用程序如何處理這類問題?
預先加載所有數據的效率低得多
無論服務器資源的成本如何,這都是糟糕的系統設計。 最有效和更好的方法是僅加載您需要顯示的數據:
想象一下,如果Google每次都為您的查詢加載了所有結果。 它不僅會降低您的體驗,還會使服務器超負荷,使其無法使用
分頁
使用分頁解決方案會更好:
這兩種方法都以類似的方式工作 - 通過在查詢中應用.per()
.page()
和.per()
方法,gems只返回該頁面的數據(如Google)
如果您想提供ajax分頁解決方案 ,您將能夠創建所有可用數據的感覺,而無需大量開銷:
我認為heroku的超時時間為30秒。 可能你的要求不止於此。
你應該留意n + 1個查詢。 您使用聯接或包含使用較少的查詢?
同樣在這種情況下,通常使用分頁。 如果您不想擁有多個頁面,只需使用ajax加載頁面即可。 也許你需要一個無盡的卷軸。 這樣你就可以避免長期請求,這實際上是一種不好的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.