То, как это делает твиттер, в основном:
- Иметь регулярный AJAX-вызов сценария на стороне сервера, который возвращает количество новых твитов
- Когда это число больше 0, отображается строка «N новых твитов»
- Нажатие на эту панель загружает новые твиты через другой вызов ajax
Один из способов узнать, сколько существует обновлений, - отслеживать последний идентификатор твита, показанный на странице пользователя (каждый твит имеет уникальный идентификатор). Итак, когда страница загружена, максимальный (идентификатор твита), скажем, 100. Ваш Ajax-вызов для проверки обновлений будет выглядеть примерно так:
/check_updates.php?last_seen=100
Затем сценарий check_updates.php
в основном проверяет БД на наличие последних твитов для вошедшего в систему пользователя, где id> 100. Аналогично, когда пользователь нажимает «Показать твиты», вызываемый URL будет выглядеть примерно так:
/show_updates.php?last_seen=100
Это будет означать, что show_updates.php
возвращает только те твиты, которые не были видны ранее, сводя время ответа к минимуму.
Приведенные выше примеры отправляют идентификатор последнего твита обратно на сервер для сравнения, но это можно сделать и с помощью текущей метки времени. Вычисления на стороне сервера по существу будут такими же (ищите твиты со времени: X, а не id твита: y), но преимущество в том, что на стороне клиента не нужно отслеживать последний загруженный идентификатор твита.