2013-08-15 2 views
0

Я сделал частную чат-систему. Пока в чате есть 3 jqueryajaxpost скрипты, вызывающие сервер в цикле для новых данных.Что было бы лучше для сохранения ресурсов серверной системы

  1. Окна сообщений между текущим пользователем и целевым пользователем (Аякс получает метку последнего сообщения на БД и сравнивает его с последней отметкой времени сообщения, которое отображалось. Получить все сообщения> чем в прошлом сообщения временной метка и отображать его в окне сообщений. Аякс петли через каждые 5 секунд после последнего возвращения.)

  2. WHOS онлайн проверок (чеки дб для Whos онлайн. Аякс петля через каждые 30 секунд после последнего возвращения)

  3. Кто отправил сообщение текущему пользователю (Отметьте и получите пользователей, которые не являются текущим целевым пользователем в окне сообщений, и перепутали текущего пользователя. Аякс петля через каждые 15 секунд после последнего возвращения)

До сих пор выше 3 являются единственными петлями Ajax у меня есть, и я до сих пор перепроверки моего кода для областей, где я могу урезать ее вниз.

Мой вопрос есть. Было бы лучше сохранить ресурсы серверной системы, если я создаю 1 ajax post и зациклирую его каждые 5/8 секунд. Или я должен оставить это как?

Я спрашиваю об этом, потому что я получил предупреждение от своего хостинга до того, как я использовал слишком много ресурсов своего сервера (из-за очень глупого эксперимента). Если я снова испортил, они режут мой хостинг, поэтому я надеюсь, вы, ребята, понимаете, почему я задаю такой вопрос.

Дополнительные сведения: Я использую jquery ajax для разговора с php-скриптом, который получает данные из mysql db. Цикл запросов выполняется на стороне клиента.

+1

1) переход к реальному хостера (или, возможно, вы (D) DOS эффективно, им это не очень нравится) 2) использовать websockets – PeeHaa

+0

У вас нет мозгов для атаки ddos ​​(lol). Его первое, что я прочитал о веб-сайтах. Его вроде как длинный опрос, но на следующем уровне? Я пытаюсь узнать больше о 'websockets', пока мне нравится то, что я читаю об этом. благодаря! –

+0

@PeeHaa только один вопрос. Нужно ли специально настроить сервер для получения веб-ящиков, чтобы я мог использовать веб-узлы? До сих пор я понял, что я могу использовать javascript для общения с сервером с помощью 'Socket.send()', но образцы, которые я вижу, используют разные порты не 80, например. 'Локальный: 9998'. –

ответ

1

Веб-узлы сложны. Поэтому, если вы решите пойти с ajax, необходимо рассмотреть несколько факторов:

  1. Частота. Эффективные системы обычно используют своего рода систему тиков. В вашем случае тик будет 5 секунд, так как все ваши временные линии могут быть тактированы в такт 5 секунд. И да, конечно, вы группируете все потребности в передаче галочки в 1 передачу.
  2. Количество данных. Постарайтесь не отправлять более 1 Кбайт байтов за галочку. Например. используйте разреженные форматы, такие как csv over eg. XML. Установите жесткие ограничения ввода. Компресс. Такие вещи. Сетевой трафик упакован - поэтому отправка 1025 байт приводит к распределению ресурсов 2 КБ.
  3. Закон о бездействии пользователя. Например. не используйте каждый тик для «окна сообщений между текущим пользователем и целевым пользователем», если пользователь неактивен более чем на минуту. Сортировка сеанса тайм-аута 20 минут или около того ...
  4. Расчет. Сделайте ответ на тикер на стороне сервера QUICK и маленький. Подумайте о том, чтобы использовать таблицы памяти или mem chaches для обработки тика, а затем иметь десять минут или около того агента, который сохраняет настойчивость, что необходимо для этого. Старайтесь избегать сложных жировых операций (например,> 3 db round trip) в ответе на тик.
  5. Хостер. Это было сказано и в других комментариях. Быстрый дополнительный намек: вы можете спросить, разрешено ли вам реализовать эту вещь до подписания контракта, если вы можете изменить контракт. Иногда в общих условиях обслуживания есть такие вещи, как видео и обмен мгновенными сообщениями.

Есть, вероятно, больше вещей .. Но они приходят на ум сразу ...

В общем, может быть, вы должны также проверить https://developers.google.com/speed/docs/best-practices/rtt

+0

+1 для номера 3 и проверьте ссылку, спасибо. –

Смежные вопросы