/ / JSON parsowanie po stronie serwera a parsowanie po stronie klienta - json, wydajność, node.js, parsowanie

Przetwarzanie JSON na serwerze vs. analizowanie strony klienta - json, performance, node.js, parsowanie

Piszę aplikację węzła i muszę na serwerze umieścić kilka danych mapy JSON. Aby dane poprawnie się wyświetlały, należy je przeanalizować.

Teraz zastanawiam się, czy lepiej jest przeanalizować na serwerze (i wysłać ten przeanalizowany obiekt danych do klienta), czy wysłać czysty plik Json i zlecić jego analizę po stronie klienta po wywołaniu ajax.

Moje największe obawy związane z robieniem tego na serwerze to to, że wiele jednoczesnych zapytań może spowolnić wszystko dla całej grupy ludzi.

Opcja kodu po stronie serwera:

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();
}
});

Opcja kodu po stronie klienta:

$.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
}
});

Odpowiedzi:

4 dla odpowiedzi № 1

To naprawdę nie ma znaczenia. W porównaniu do dostępu do bazy danych (lub w zasadzie wszystkiego, co wymaga aktywności sieciowej lub dyskowej) serializacja / deserializacja JSON jest niezwykle szybka. Nie nadmiernie optymalizuj rzeczy, które nie wymagają optymalizacji.

Jeśli jednak chcesz przekazać dane do klienta bez przetwarzania po stronie serwera i już otrzymałem ciąg JSON, nie ma sensu deserializować go na serwerze, a następnie ponownie serializować, aby przesłać go do klienta, który ponownie będzie musiał dokonać deserializacji.


2 dla odpowiedzi nr 2

Jeśli jest to usługa, którą zamierzasz prowadzić,skaluj lub wspieraj przesuwanie się naprzód, to prawdopodobnie pójdę w / parsowanie na serwerze. Jeśli nie, a ty po prostu blokujesz to dla jakiejś krótkotrwałej potrzeby lub jesteś taktyczny z jakiegokolwiek powodu, to po prostu parsuję to na kliencie . Tak czy inaczej, oczekuję, że wpływ analizy / serializacji JSON będzie znikomy ... dlatego przy podejmowaniu decyzji wziąłbym pod uwagę inne czynniki.

Jeśli korzystasz z parsowania po stronie serwera, pozostanieszw dobrej pozycji z wielu powodów. Po pierwsze, będziesz w stanie zapewnić lepszą umowę (umowy) dla tych danych (np. Rozłożyć dane na spójne zestawy obowiązków. Ukryć nieszczelne / brzydkie szczegóły. Zmniejszyć i przyciąć wielkość ładunku do tego, co ma sens dla Ciebie Po drugie, jeśli zdecydujesz się użyć innego dostawcy danych lub podstawowych zmian dostawcy danych lub chcesz zmienić szczegóły implementacji (np. Algorytm analizy), możesz ukryć te decyzje przed klientem (klientami). na serwerze dostępnych jest wiele opcji skalowania lub optymalizacji wydajności usługi (np. buforowanie, optymalizacja parsowania, dodatkowe maszyny itp.), a te szczegóły implementacji można również ukryć przed konsumentami.

Podsumowując, zapewniłbym dobry zestaw umówi wykonaj analizę serwera, aby ukryć szczegóły mojej implementacji, chyba że okoliczności (np. krótki harmonogram, jest to prototyp) podyktowane inaczej.