Как быстрее читать данные в JS: через JSON или XMLHttpRequest?
Как я понимаю можно читать данные в JS для построения графика или отправки куда-либо несколькими способами, какой из них самый быстрый?
1. XMLHttpRequest
2. Чтение JSON
3. Чтение из базы Mongo
4. Может есть способ еще быстрее?
XMLHttpRequest - это клиентское апи для общения клиента и сервера. Json -формат данных, монга - nosql-бд. Это разные вещи.
Я бы хранил данные в бд, по апи (через XMLHttpRequest) получал данные с сервера в формате json.
Вопрос очень странный
Antony Tkachenko я просто скриптом сохраняю множество данных и по ним нужно строить графики с автооновлением , вот уже сутки никто не расскажет мне и нагуглить не могу нигде . Пока за сутки научился стартовать http сервер на Node.js и рисовать график на index.html Вопрос что делать дальше и как правильно подключить данные , чтоб все было максимально быстро ? 1-3 значения в секунду . Может использовать график от Google sheets ?
Олег Петров, Думаю вам вполне подойдет Mongo.
Я так понимаю у вас страница с графиком грузится 1-3 секунды и вы хотите ускорить?
- Если так, то не думаю что получение данных, узкое место из-за которого график появляется до 3 секунд.
Владимир Сартаков, нет , просто на Python это выглядит тормознуто и просто ужасно, поэтому я взялся за освоение Js, так как хочу , чтоб было быстро и плавно ))
Олег Петров, для постоянного общения клиента и сервера лучше использовать websocket, можете погуглить ещё на тему long pooling.
В целом сервер при появлении новых данных отправляет на клиент их, клиент строит график по ним.
Ну если вы пишите на node js, то нет ни чего быстрее, хранить данные в текстовых файлах и считывать построчно. )
p.s. Странный вопрос - странный ответ )
Я просто плохо знаю Js, но надр сделать . Просто если значений более 10000, то если я буду записывать их в один json и читать оттуда , мне показалось это будет долго !
Олег Петров, Правильно мыслите, 10 000 в одном json, в переменной может выжрать всю оперативку и ком колом встанет )
Тут без подробностей не дать дельного совета.
1. Хранить данные нужно централизовано, то есть на сервере, и много клиентов(других компов) могут их запросить? Или просто должно сохранится на компе, даже если он будет неделю выключен?
2. Примерная структура данных (записей)? Это играет не меньшую роль, чем количество записей.
Владимир Сартаков,
1.это скорее просто визуализация для меня , никто кроме меня не должен подключаться
2.50-100 колонок , которые будут заполняться числами от -100 до 100 примерно раз в секунду . Выглядеть это будет как 100 биржевых графиков на одном чарте , обновляются синхронно
Владимир Сартаков, вот выше посоветовали 1. Данные в Mongo и потом с помощью XMLHttpRequest делать Json запросы из Js по API
2. Webcocket и long pooling , но я не знаю насколько это трудно это реализовать на Node.js и localhost
Создайте файл data.txt, в него записывайте каждую секунду строки(100 строк, по количеству графиков) в таком виде:
-50|2|-5|100|-99|77...
50|-2|-5|546|-99|82...
- на каждый график по строке.
Потом читайте этот файла построчно, и по каждой строке выводите график.
Получить массив данных из строки можно так:
let items = str.split("|"); // str - это строка, в items массив чисел от -100 до 100
---
- решение не универсальное, не расширяемое и не красивое, но будет самым быстрым.
Олег Петров, Конечно можно json в текстовый файл записать, без проблем, вообще json это текстовый формат. как бы текстовое преставление js объекта.
Json легко сериализуется в обычный обьект.
Json очень удобен, но если будет огромный файл, обработать json кусками не получится, придется все загрузить в переменную(занять оперативную память)
А работая со строками, в node js, есть даже возможность, не читать весь файл целиком, а обрабатывать его построчно, кусками.