2012-10-18 95 views
1

我有android庫存應用程序。此時,應用正通過https與服務器進行通信。我已經啓用了gzip並且正在工作。當用戶掃描條形碼時,應用程序將該代碼以及電話ID發送到服務器。我通過XML來完成。然後服務器響應xml女巫包含一些數據。如每個倉庫中的金額是,價格,產品名稱。然後用戶確認金額和應用程序再次發送到服務器和消息響應(好,或不好)。儘量減少應用程序的上傳和下載速度

當庫存通過WiFi時,這不是問題,速度很好,延遲較低。但是,當庫存通過移動網絡進行時,通信會帶來延遲。我需要爲通信創建二進制格式嗎?而且XML數據有很大的開銷(像標籤等不需要的數據)。或者有一些通信中的數據量最小化的標準或最佳實踐?

回答

1

如果您主要關心的是減少有效負載的大小,那麼您一定希望查看與XML不同的格式。一個受歡迎的選項是來自Google的protobuf

+0

我希望減少延遲... – Guntis

+1

「延遲」是什麼意思?什麼之間的延遲?網絡延遲顯然不在您的控制之下。您可以控制的是您在客戶端和服務器之間來回切換多少次,有效負載的大小以及服務器運行的代碼的性能。 – kabuko

1

您無法從應用程序調整延遲。你可以減小你的有效負載來加速傳輸,但這就是它。看看JSON。它比XML更輕量,幾乎所有語言都是本地的。

0

如果客戶端向您的服務器發送的請求過多,則可以考慮更改服務器API。例如,在獲取庫存時,您可以使用單獨的API來獲取產品類別,然後在獲取類別後,分別調用以獲取每個類別的產品,每種產品都有一個API來獲取詳細信息。爲了儘量減少請求的數量,您可以創建一個單一的API,爲您提供所有類別,每個類別下的所有產品以及這些產品的詳細信息。這種方法將減少您的客戶端和服務器之間的請求數量。

如果有效負載的大小真的很大,可以嘗試更輕量級的JSON。