Проблема с периодическим обновлением заключается в том, что, хотя это хорошо для некоторых вещей, которые не слишком критичны по времени, например для получения электронной почты, оно не является мгновенным. Поэтому вы не захотите использовать его для чего-то вроде чата, где ожидание ответа даже пять секунд слишком долго. Вы можете уменьшить интервал опроса и сделать запрос раз в секунду или даже полсекунды, но тогда вы быстро перегрузите свой браузер и потратите ресурсы.
Одним из решений этого является использование техники, называемой длинным опросом ajax (известной другим как «комета» или «обратный ajax»). С помощью этого метода браузер выполняет длительный Ajax-запрос, который не возвращается, пока не появятся новые данные. Этот запрос находится на сервере (вам нужно запустить специальное серверное программное обеспечение для масштабируемой обработки, но вы можете взломать что-нибудь вместе с php в качестве демонстрации), пока не появятся новые данные, после чего они возвращаются клиенту с новые данные. Когда клиент получает данные, он делает еще один длинный запрос на опрос, чтобы сидеть на сервере, пока не будет больше данных. Я полагаю, что именно этот метод использует Gmail.
В этом и заключается суть длинного опроса, вам нужно внести пару изменений, потому что большинство браузеров истекает запрос ajax, если он не возвращается через долгое время, поэтому, если время ожидания запроса ajax истекло, клиент должен сделать еще запрос (но время ожидания обычно составляет минуту или больше). Но это главная идея.
Реализация этого на стороне сервера намного сложнее, чем на стороне клиента (на стороне клиента требуется всего несколько строк js).