![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| Гвоздь |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 3.11.2005 Репутация: нет Всего: нет |
мне нужно, при помощи либы xAJAX написать загрузку данных на страницу, если были новые данные.. вообщем, что-то вроде как в чатах.. если новые сообщения есть, то осуществить загрузку данных на страницу в div блок, если нету, то не осуществлять.. я не знаю, каким образом такое сделать на xAJAX(( думаю, может каждые 5 секунд обновлять определённую область страницы, где должны отобрадаться сообщения, но не знаю как и это реализовать.. просто если каждые 5 сек обновлять, то будет слишком глючно, особенно у модемщиков.. но всё-таки, как подобное можно реализовать, подскажите..
|
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: нет Всего: 146 |
Нет смысла обновлять каждые 5 секунд, достаточно посылать асинхронный запрос о наличии изменений за такой-то период на сервер каждые 5 секунд. Т.е. если в ответ пришло false, то ничего не делаем, если пришли данные, что через DOM(хотя можно и через innerHTML, но лучше через DOM) добавляем эти данные (Так что даже для модемщиков это не будет заметно). Сам xAJAX сделан довольно просто, т.ч. тут проблем, я думаю, не должно быть. Это сообщение отредактировал(а) sTa1kEr - 2.6.2007, 15:37 |
|||
|
||||
| Гвоздь |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 3.11.2005 Репутация: нет Всего: нет |
||||
|
||||
| Гвоздь |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 3.11.2005 Репутация: нет Всего: нет |
всё, сделал уже. при помощи setTimeout вызываю функцию обновления поля сообщений. получается совсем не заметно для модемщиков.
|
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
ИМХО, мой алгоритм:
1. С помощью AJAX отправляем запрос скрипту, например "http://site.com/chat.php?last=1180954700" 2. Скрипт сравнивает "last" с временем последнего сообщения а) Если время последнего сообщения больше переменной "last", то отправляем юзеру время последнего сообщения на сервере + пачку новых сообщений. Время последнего сообщения заносится в переменную last у юзера, новые сообщения добавляются в браузер. б) Иначе отправляем 0 или false или еще что-нибудь. В браузере ничего не происходит. 3. Переходим к путку 1 через 15 секунд. С таким алгоритмом мы будем получать новые сообщения в браузер при минимальных затратах трафика. |
|||
|
||||
| ST_Falcon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 14.11.2003 Где: Львов Репутация: нет Всего: 1 |
А не офигеет ли сервер с 1000й людей в онлайне, которые ему каждые 5ть секунд запросы будут посылать? И это помимо основной работы сайта...
|
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: нет Всего: 146 |
С 1000-ю людей одновременного онлайна может офигеть любой сервер и без постоянных запросов AJAX. Но все же если надо привести к минимум затраты сервера в ответ на запрос о наличии обновлений, то для этого можно генерировать готовый XML с датой последнего сообщения и обращаться к этому статическому XML (т.е. в обход PHP) и уже на стороне клиента сравнивать даты. Не оптимизированная работа основного скрипта будет съедать *значительно* больше ресурсов, чем все подобные запросы в сумме. |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: нет Всего: 78 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: X технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |