/ / JSON синтаксичний розбір на стороні сервера та розбору клієнта - json, продуктивність, node.js, розбір

JSON аналізується на сервері, а не на аналізі сторони клієнта - json, performance, node.js, parsing

Я пишу додаток для вузла і мені потрібно надіслати на сервер купу даних карт 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
}
});

Відповіді:

4 для відповіді № 1

Це насправді не має значення. У порівнянні з доступом до бази даних (або, в основному, з будь-якою мережевою або дисковою активністю) серіалізація / дезаріалізація JSON надзвичайно швидко. Не надмірно оптимізуйте речі, які не потребують оптимізації.

Однак якщо ви хочете передати дані клієнту без будь-якої обробки на стороні сервера і вже отримайте рядок JSON, було б безглуздо десеріалізувати його на сервері, а потім повторно серіалізувати, щоб передати його клієнту, який знову доведеться десаріалізувати.


2 для відповіді № 2

Якщо це послуга, яку ви маєте намір підтримувати,масштаб або підтримка рухається вперед, тоді я, мабуть, пітиму / проаналізую сервер. Якщо ні, а ви просто заважаєте це на якусь короткострокову потребу або є тактичною з будь-якої причини, то я б просто проаналізував це на клієнті . У будь-якому випадку я очікую, що вплив розбору / серіалізації JSON буде незначним ... саме тому я вважаю інші фактори при прийнятті рішення.

Якщо ви перейдете з розбором на стороні сервера, вам залишитьсяв хорошій позиції з ряду причин. По-перше, ви зможете надати кращі контракти (-и) для цих даних (наприклад, розкладіть дані на згуртовані набори відповідальності. Сховати протікаючі / некрасиві деталі. Скоротіть та скоротіть розмір корисного вантажу до того, що має для вас сенс По-друге, якщо ви вирішите використовувати іншого постачальника даних або зміни постачальника даних, або ви хочете змінити будь-яку деталь реалізації (наприклад, алгоритм розбору), ви можете захистити ці рішення від клієнта (клієнтів). варіантів на сервері для масштабування або оптимізації продуктивності послуги безліч (наприклад, кешування, оптимізація аналізу, додаткові машини тощо), і ці деталі реалізації також можуть бути приховані від споживачів.

Загалом, я б забезпечив хороший набір контрактіві зробіть сторону сервера розбору, щоб приховати мої відомості про реалізацію, якщо обставини (наприклад, коротка часова шкала, це прототип) не диктуються інакше.