服务器端JSON解析与客户端JSON解析

服务器端JSON解析与客户端JSON解析,json,performance,node.js,parsing,Json,Performance,Node.js,Parsing,我正在编写一个节点应用程序,需要为一组JSON映射数据提供服务器。为了正确显示数据,必须对其进行解析 现在我想知道是在服务器上解析(并将解析后的数据对象发送到客户端)还是在ajax调用后发送纯json并在客户端解析它更好 在服务器上执行此操作时,我最大的担忧是,许多同时进行的查询可能会使一大群人的速度减慢 服务器端代码选项: var data = []; db.simple_query([{ask: COMPLEX QUERY TO RETURN DATA AS JSON }], functio

我正在编写一个节点应用程序,需要为一组JSON映射数据提供服务器。为了正确显示数据,必须对其进行解析

现在我想知道是在服务器上解析(并将解析后的数据对象发送到客户端)还是在ajax调用后发送纯json并在客户端解析它更好

在服务器上执行此操作时,我最大的担忧是,许多同时进行的查询可能会使一大群人的速度减慢

服务器端代码选项:

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字符串,那么在服务器上对其进行反序列化,然后再次序列化以将其传输给客户端是毫无意义的,而客户端将不得不再次对其进行反序列化。

如果这是您打算维护的服务,请扩展,或者支持向前移动,那么我可能会在服务器上进行w/解析。如果不是,而你只是出于一些短期的需要或者出于任何原因而使用战术,那么我会在客户端解析它。不管怎样,我希望JSON解析/序列化的影响可以忽略不计。。。这就是为什么我在做出决定时会考虑其他因素的原因。 如果您使用服务器端解析,您将处于一个良好的位置,原因有很多。首先,您将能够为这些数据提供更好的契约(例如,将数据分解为内聚的责任集。隐藏泄漏/丑陋的细节。减少和删减有效负载的大小,使其符合您的需要)。其次,如果您选择使用不同的数据提供程序,或者基础数据提供程序发生更改,或者您希望更改任何实现细节(例如,您的解析算法),您可以对客户机隐藏这些决定。此外,服务器上用于扩展或优化服务性能的选项很多(例如缓存、解析优化、其他机器等),这些实现细节也可以对使用者隐藏


总而言之,我会提供一组好的契约,并在服务器端进行解析,以隐藏我的实现细节,除非情况(例如,较短的时间线,这是一个原型)另有规定。

Hmm,我从查询函数中得到一个JSON字符串。我需要做的是在某个时刻反序列化该字符串。若我反序列化(解析)it服务器端,它在传输到客户端之前会被序列化吗?