@Nonz
Человек

Как обработать большие объёмы данных в NodeJS?

В общем то в ноде я новичёк и сразу же наступил на грабли обработки большой кучи данных... В общем то пишу парсер нескольких сайтов (на данный момент их 12). Посылается запрос на сервер через сокеты. Там каждый сайт обрабатывается.

Обработка сайта происходит следующем образом (в целом почти одинакова для каждого сайта): парсится первая страничка поиска, далее обрабатываются блоки из поиска, из них получаем ссылки на полное описание, подгружаем описание, из страниц описания переходим на страницу описания автора - всё это собираем и отправляем пользователю. Так же не забываем что там может быть не одна страница в поиске и следовательно повторяем операцию на следующих страницах. И так для 12 сайтов.

Выглядит примерно так:

selected_sites.forEach(function(site_name) {
	var site = new sites[site_name];

	site.on('found', function(data) {
			socket.emit('found', data);
	});

	site.on('not_found', function() {
		socket.emit('not_found', 'Nothing found at ' + site.getSiteName());
		delete site;
	});

	site.search(socket_data.params);
});


Так вот если я открываю несколько вкладок и жмякаю разные запросы - мне приходиться ждать пока определённые запросы спарсятся у того, кто нажал первым...

В общем то отсюда и вопрос - как ускорить весь этот процесс дабы остальным пользователям не ждать...
  • Вопрос задан
  • 245 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Alastor
если страницы статичны или обновляемы (раз в 3-12 часов), можно хранить html в базе. или распарсить и хранить нужные данные.

можно сделать очередь запросов обрабатываемых в данный момент и чтобы не запускался повторно на тот же самый URL.

если я правильно понял проблему
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы