4
A
回答
1
如上所述,最好在數據庫中進行排序。除此之外,假設數據庫沒有對它進行排序,是否應該對它進行排序,然後將其緩存或緩存,然後每次從緩存中檢索時對它進行排序?
您應該在將其放入緩存之前對其進行排序。將緩存看作不僅僅是存儲數據,而是存儲工作。向客戶提供城市列表的工作包括從數據庫中檢索並對其進行分類。
這是真實的過程是否涉及從數據庫或一些外部的API或者即使它需要一些長時間運行的過程,就是在應用內部檢索數據。過程可能不會產生包含該工作結果的一些對象,而只是數據。這取決於你是否應該緩存和保存多久。但總的來說,值得考慮的是,是否可以緩存整個過程的輸出而不僅僅是數據檢索。
您還可以緩存進程的某些部分。例如,假設您有一個電話會返回公司前100名產品的實時可用性。也許結果不能被緩存,或者只能被短暫緩存,因爲它應該是「實時」數據。但是也許計算出前100名產品的過程需要更長的時間,而且這一步驟可以被緩存。現在,您的實時通話只需檢查預先計算的產品清單上的可用性。
兩個例外: 如果名單真的是那麼短的差別可能是微不足道的。 另外,如果您支持多語言應用程序,那麼排序順序可能取決於用戶的語言。字母順序因字母而異。在這種情況下,您可能需要根據給定的請求文化對列表進行排序。
0
你應該總是儘可能地對服務器端進行排序。 (見Here),這樣的辛勤工作是做
然後返回排序列表。然後你需要決定是否應該緩存信息。緩存允許訪問數據更快,然後每次調用服務器/數據庫。
緩存的問題是你是而不是每次調用獲取新/新數據。因此,您需要確定此列表是否經常更新。
如果它是一個下拉列表,他們會定期填寫,然後緩存在窗體上。 如果它是一個註冊表單,它們再次使用一次,不要打擾緩存。
相關問題
- 1. 可緩存對象緩存
- 2. 緩存對象
- 3. 緩存UserControl對象
- 4. Java對象緩存
- 5. C++ - 緩存對象
- 6. Jquery對象緩存
- 7. Python對象緩存
- 8. ASP.NET緩存對象
- 9. Android對象緩存
- 10. 緩存原型函數不會緩存它所屬的對象
- 11. 緩存大量對象的方法(ASP.NET緩存vs靜態對象和單獨緩存對象vs字典)
- 12. 訪問緩存從緩存中緩存對象
- 13. 對象引用和緩存
- 14. python全局對象緩存
- 15. 緩存反射對象
- 16. PHP的SimpleXML對象緩存
- 17. LINQ到對象緩存?
- 18. ASP.NET MVC3緩存對象
- 19. 迭代緩存對象
- 20. 在Application_AuthenticateRequest中緩存對象
- 21. 瞭解Neo4j對象緩存
- 22. 做caja.appspot.com緩存cajoled對象
- 23. ASP.NET 4.0對象緩存
- 24. 緩存什麼對象?
- 25. DAL層和緩存對象
- 26. Oracle Coherence的緩存對象
- 27. 緩存對象和JSF
- 28. 緩存集合對象
- 29. JavaScript對象引用緩存
- 30. ASP.NET緩存對象讀寫
在數據庫內進行排序 - >返回 - >存儲緩存。 (除非經常更新等,用戶經常使用它) –
@John,作爲答案發布一點點更多的解釋 – Rahul