我目前正在使用node.js爲我當前的iPhone應用程序構建一個REST風格的Web服務。目前,該系統的工作原理如下:多個REST風格的Web服務調用與MySQL聯接
- 客戶端發出請求的Node.js服務器,服務器執行適當的計算和MySQL查詢,並返回數據
- 客戶的反應器處理響應,並更新UI
有一件事,我一直在想的就是差異(在性能和最佳實踐方面)作出多個API調用到我的服務器VS一對一呼叫在MySQL數據庫中執行多個語句組合,然後返回一個構造目的。
例如: 比方說我加載用戶配置文件在用戶界面中顯示。用戶具有個人資料圖片,基本信息和新聞提要項目。採用方案一,我會做如下:
- 撥打的getUser請求到服務器,這將在DB這樣做的查詢:
Select * from user join user_info on user.user_id=user_info.user_id left join user_profile_picture on user_profile_picture.user_id=user.user_id
。
服務器將隨後在一次
選項2返回從每個表
- 向服務器發出3個異步請求:
- getUser
- getUserInfo
- getUserProfile
- 每當任何請求被接收,用戶界面更新
因此,考慮這兩個選項,我想知道這將提供更好的可擴展性。
此刻,我想到的是使用選項2去這些原因:
- 每個異步請求的會比選擇一個查詢速度更快,因此顯示的東西給用戶更快
- 我也整合了Memecache,我覺得3個獨立的調用將更容易緩存特定的結果(例如不緩存用戶配置文件,但緩存用戶,user_info和user_profile_picture)。
任何想法或經驗?
打交道,如果你正在建設一個移動應用程序,然後它總是更好更慢減少沒有http呼叫,所以我建議只做一個http呼叫並一次性獲取數據 –