簡體   English   中英

在客戶端或服務器端對數據進行操作是最佳實踐嗎?

[英]Is it a best practice to do operations with data in the client-side or in the server-side?

例如,如果我必須將數據庫中的數據數組排序到 append ,則它位於 web 頁面的主體上。 在性能方面,我應該在服務器端對其進行排序然后將其發送到客戶端還是應該按原樣發送數據並在客戶端對其進行排序還是沒有區別?

如果您在客戶端上執行此操作,那么無論客戶端計算機有多快,每個客戶端都必須對數據進行排序。 它可能是開發人員的超強筆記本電腦,也可能是某人使用了 5 年的預算 Android 手機。

如果你在服務器上做,那么服務器必須為每個客戶端對數據進行排序,你必須為計算資源付費。 但是,您確實有機會緩存已排序的數據,這是一種節省(如果數據不經常更改)。

這里沒有一個萬能的答案。

這是初學者、中級和專家開發人員可能會遇到的常見問題。 這確實是一個架構問題,最好用盡可能多的上下文來回答。

你的 API 在什么平台上運行? 如果您在雲中托管(AWS、Azure 等),您是否試圖通過最小化資源使用來最小化托管成本? 如果是這樣,將這項工作推給客戶可能會在規模上有所幫助,但對於小型應用程序可能可以忽略不計。

你的客戶呢? 您是否僅在企業環境中支持桌面計算機,您可以將其規范概括的可能性很高? 或者計算資源最少的物聯網設備是否與您的 API 聯系? 在后一種情況下,客戶端設備可能沒有 memory 或計算能力來對數據進行排序,同時仍滿足其職責的 rest。 可能使用 10-20 年的移動設備呢?

這是 API 上的固定行為還是客戶端可以請求服務器端排序? 您希望 API 提供什么樣的靈活性?在各個方面實現開關和參數的可行性如何? 你在什么時候做得太多,用過多的按鈕和撥盤來配置或調整 API 的目的。

以我個人的經驗,我喜歡像Sequelize這樣的 ORM,它可以通過很少的工作在您的 API 上提供很大的靈活性,但是這些工具可能會帶來計算成本和潛在的(但通常不常見的)安全問題 它們是非常通用的實現,並不總是適合您的用例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM