Наиболее важным аспектом проблемы будет то, как вы выполняете запрос, чтобы найти новые записи для пользователя. Вам нужно только отозвать записи, которые вы еще не получили ранее на странице. Этого можно достичь, сохранив переменную на клиенте, отслеживая хронологически последнюю запись, полученную ранее. Затем только запросите у сервера записи пользователя, которые попадают после этой точки. Для этого вашим записям потребуется метка времени, или их первичные ключи должны будут гарантированно падать после более ранних записей при сортировке.
// jQuery example
$.getJSON(
"http://domain/url?after=" + lastTimeStamp,
function(data) {
// Render the data
}
)
Убедившись, что количество записей, полученных по вашему запросу, является минимальным, требуемым клиентом, вы также хотите убедиться, что запрос выполняется быстро. Вероятно, помогло бы убедиться, что вышеупомянутый столбец отметки времени и столбец внешнего ключа для связи записи с пользователем проиндексированы. Кроме того, если вы используете хранимую процедуру, то тот факт, что механизм БД имеет кэшированный план выполнения, должен значительно ускорить возврат запроса.
Если ваши пользователи будут часто возвращаться на страницу и у вас не будет много одновременных пользователей, вы также можете кэшировать результаты запросов на сервере.
Если скорость является единственным фактором, не имеет большого значения, какую серверную технологию вы используете для размещения кода, который отправляет записи клиенту. Важно то, что вы отправляете только необработанные данные. Другими словами, я бы рекомендовал не использовать панель обновления ASP.NET. Вместо этого я бы создал веб-сервис, возможно, в WCF, который кодирует объекты в виде структур данных JSON, чтобы уменьшить размер ответа и время, необходимое для его анализа. Затем я заставил клиента запустить код Javascript для генерации HTML. DOM-манипуляции, даже с использованием таких инструментов, как JQuery, довольно быстрые.