Фон
Итак, если вы перейдете на https://foursquare.com/, и загляните под заголовок «Недавние действия», вы увидите постоянно обновляемый список обновлений от различных членов Foursquare по всему миру.
Новые обновления соскальзывают на вершину стека, а самое старое соскальзывает (вероятно, с использованием JQuery или чего-то еще, но это не мой вопрос).
Другой участник Stack Overflow сообщил мне, что на самом деле это более или менее псевдо-новостная лента. Когда вы загружаете страницу, она выполняет вызов в базу данных и захватывает 30 самых новых записей, а затем сначала отображает 11 самых старых из этих 30 на странице, а затем устанавливает тайм-аут для соскальзывания с самого старого / слайд с самым новым , Тем не менее, он только последовательно просматривает эти же 30 записей (вы заметите это, если оставите себя на странице без обновления или чего-либо еще). Он не будет делать никаких других вызовов AJAX для получения новых сообщений от сервера. Это происходит только при загрузке страницы.
Вопрос (ы)
- Есть ли причина, по которой они это делают?
- Я хочу, чтобы моя была настроена, чтобы я мог получить набор записей при загрузке страницы и отобразить их (аналогично Foursquare), однако , я бы хотел (после того, как я переберу те Я привел в DOM), чтобы затем сделать еще один вызов AJAX, чтобы увидеть, есть ли какие-либо более новые, и беспрепятственно интегрировать эти новые в тот же поток. По сути, думайте об этом как о смешении между Twitter и Foursquare. Твиттер сообщает вам, когда появляются новые сообщения, и дает возможность разместить их в верхней части своего канала, а Foursquare просто добавляет новые в обновление страницы, и все. Как можно начать думать об этом (с точки зрения эффективности, архитектуры и т. Д.)?
Я также собираюсь услышать, есть ли причины, по которым я не должен делать это.
Завершено
Пока у меня есть хранимые процедуры SQL Server, которые позволяют мне получать набор записей (из заданного набора обстоятельств на сайте - не по теме). Я могу назвать их всякий раз (очевидно). В качестве части этих записей, возвращающихся из базы данных, приводится их уникальный идентификатор. Когда я отображаю их в DOM, я использую тег <span>
для хранения идентификатора каждого сообщения, поэтому у меня есть возможность сделать AJAX-вызов обратно на сервер, а также передать последний идентификатор, который был показан пользователь, а затем у меня также есть процесс, который будет возвращать только те с большим ID (введен позже).
Итак, как вы видите, насколько это технически возможно, я знаю, что это так. Я могу отобразить целую кучу сообщений при загрузке страницы в DOM, а затем, как только она перейдет к последнему, сделать еще один AJAX-вызов на сервер, чтобы получить больше информации и продолжить их обновление. Я в основном задаю два вопроса выше, это хорошая идея (иметь столько сообщений одновременно в DOM)? И если есть лучше и более эффективные способы, я могу это сделать.
Спасибо, ребята.