Я бы определенно подумал о кешировании.Особенно, если вы получаете наборы с гораздо большим количеством пользователей, выполнение AJAX-запроса каждые 10 секунд может легко перегрузить ваш сервер.Однако, если вы хотите сохранить простоту, делайте запрос каждые несколько минут для обновления.Кэшируйте пользователей, сгенерируйте их в код JavaScript, скажем users = new Array (user1, user2, ...).На самом деле вам не нужно постоянно обновлять страницу, если это не так важно, так как большинство пользователей все равно уйдут через минуту или две.Если у вас длинный список, который меняется каждые несколько секунд, это дает вам достаточно времени, чтобы вам никогда не приходилось обновлять с помощью AJAX, а просто полагаться на сгенерированный сервером список пользователей.
Если нет, сохраните последний разВы обновили список в переменной и отправили время в качестве аргумента на сервер при обновлении через AJAX, а затем попросили сервер быстро проверить, какие новые пользователи были добавлены, и отправить только тех.Затем просто объедините новый массив новых серверов со старым массивом.Я настоятельно рекомендую не звонить каждые 10 секунд для нового имени, хотя.Вы не только увеличите пропускную способность на своем сервере, но и увеличите загрузку ЦП, когда вам нужно будет найти следующего пользователя в списке, а затем отправите вам этого.Для хорошей практики всегда позволяйте клиенту выполнять как можно большую часть работы без задержки.Существует только один сервер, но гораздо больше клиентов.Каждая операция, которую вы переносите на клиентов, будет экономить вашему серверу сотни, если не тысячи операций.
Что касается длинного опроса против setInterval, я бы порекомендовал setInterval в этом случае.Вы можете, по крайней мере, отправить запрос с аргументом времени, указав время последнего обновления, и, следовательно, нужно отправить только эту небольшую часть вместо всего массива данных.
var storage = new Array(user1, user2, ...); //set all your data here, generate it from your server
var lastUpdate = //set the last time you updated it, just create a date variable
function rotateUsers()
{
//do your fade in and fade out here
}
function update()
{
//create a new HttpRequest, and then set the url as "yoursite.com/update?lastUpdateTime="+lastUpdate;
//Take the response data, and merge the new users list with the old one
}
setInterval('rotateUsers()',10000);
setInterval('update()',60000); //update once a minute