簡體   English   中英

服務器上的JSON解析與解析客戶端

[英]JSON parsing on server vs. parsing client side

我正在編寫一個節點應用程序,需要服務一堆JSON地圖數據。 為了正確顯示數據,必須對其進行解析。

現在我想知道是否更好地解析服務器(並將此解析后的數據對象發送到客戶端)或發送純json並在ajax調用后在客戶端解析它。

在服務器上執行此操作時,我最擔心的是,許多同時進行的查詢可能會使一大群人的所有內容變慢。

服務器端代碼選項:

var data = [];
db.simple_query([{ask: COMPLEX QUERY TO RETURN DATA AS JSON }], function(err, geo_data){
                        if (err) {
                            callback(err);
                        }
                        else{
                            data.push(JSON.parse(geo_data.rows[0].row_to_json));
                            callback();
                        }
                    });

客戶端代碼選項:

$.ajax({
                    type: 'GET',
                    url: url,
                    success: function(data){
                        if (data){
                            $.each(data, function(i, geo){
                                L.geoJson(JSON.parse(geo)).addTo(map);
                            });
                        }
                    },
                    error: function(data){
                        //Error Handling
                    }
                });

這沒關系。 與數據庫訪問(或基本上涉及網絡或磁盤活動的任何東西)相比,序列化/反序列化JSON的速度非常快。 不要過度優化不需要優化的東西。

但是,如果您想要在沒有任何服務器端處理的情況下將數據傳遞給客戶端並且已經獲得JSON字符串,那么在服務器上反序列化它然后再次序列化以將其傳輸到客戶端將是毫無意義的,這將再次必須反序列化它。

如果這是您打算維護,擴展或支持向前發展的服務,那么我可能會在服務器上進行解析。 如果沒有,你只是出於某種短期需要或出於任何原因的戰術,那么我只是在客戶端解析它。 無論哪種方式,我都希望JSON解析/序列化的影響可以忽略不計......這就是我在做出決定時考慮其他因素的原因。

如果您使用服務器端解析,由於多種原因,您將處於有利位置。 首先,您將能夠為此數據提供更好的合同(例如,將數據分解為有凝聚力的責任集。隱藏漏洞/丑陋的細節。減少並修剪有效負載的大小,使其對您有意義)。 其次,如果您選擇使用不同的數據提供者或基礎數據提供者更改,或者您希望更改任何實現細節(例如您的解析算法),您可以從客戶端保留這些決策。 此外,您在服務器上用於擴展或優化服務性能的選項很多(例如緩存,解析優化,其他機器等),這些實現細節也可以從消費者隱藏。

總而言之,我提供了一組很好的合同,並在解析服務器方面隱藏我的實現細節,除非情況(例如短時間線,這是原型)另有說明。

暫無
暫無

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

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