Есть ленты комментариев, хранятся в mysql(одна таблица с привязкой коммента к заданой статье).
На сайте необходимо сделать так, чтобы комменты обновлялись автоматически раз в минуту у пользователей, у который открыта страница с комментами(а в идеале чтобы обновление происходило только при добавлении коммента). Сейчас реализовано посредством ajax, но это не самый лучший способ с точки зрения количества запросов к серверу, нагрузки, трафика.
Какими методами можно воспользоваться для минимизации нагрузки не сильно усложняя архитектуру приложения?

Tagged with →  

12 Responses to Ленты комментариев

  1. SkoLt:

    WebSocketы вон вроде обещают вернуть когда дырки в безопасности закроют. А вообще — тебе comet нужен, если я правильно понял суть проблемы

  2. AynApp:

    ajax.
    Для минимизации нагрузки должно передаваться время последнего обновления на клиенте, сравниваться с лежащим на сервере временем последнего обновления контента, приезжать на клиент либо отлуп что все по-старому, либо новенький контент. На сервере контент для ответа должен кэшироваться (если он, конечно, не уникальный для каждого юзера). С искренними, Ваш К.О.

  3. Igebad:

    сейчас так и сделано.

  4. NieDead:

    Если загвоздка только в количестве запросов, то, наверное, поможет long pool:
    http://javascript.ru/ajax/comet
    http://stackoverflow.com/questions/33366

  5. YxoFcuk:

    Делал мгновенно-появляющиеся комменты на этом:
    http://faye.jcoglan.com/
    (пример работы можно увидеть в любом после newrussia.org)

  6. Igebad:

    а nodejs кто-нибудь юзал для этих целей?

  7. SbVelo:

    а чем nodejs отличается в этом плане от любого другого серверного языка?

  8. KciSnow:

    асинхронностью и возможностью сдюжить больше одновременных соединений, чем какой-нибудь Django. Если грамотно написать, конечно.
    Но если не гоняться за баззвордами, лучше заюзать питонячий twisted или tornado.

  9. SbVelo:

    Но браузер то все равно останется при своих ограничениях? Мне кажется, вопрос состоит в том, чтобы уменьшить количество трафика между клиентом и сервером.

  10. KciSnow:

    Трафик можно уменьшить соптимизировав протокол, например с XML перелезть на JSON или, если есть возможность, на ON :).

    Long pool облегчит жить серверу в плане реквестов, но придётся уметь держать много одновременных соединений. Ну и плюс в теории поможет избавиться от накладных расходов на запросы к серверу, вместо n реквестов будет 1 реквест 🙂

  11. NieDead:

    long pool нехило снизит трафик и без оптимизация протокола, даже при пустом ответе заголовки очень много занимают, если их туда сюда гонять по таймеру.

  12. Igebad:

    оптимизацию, используя ajax, мы уже провели — отдается, как выше уже писали, только время последнего коммента. Если время больше, чем время последнего коммента на клиенте, то дергается уже другой скрипт, который отдает комменты в json.
    Сейчас мы думаем, куда можно еще копнуть, чтобы все работало быстрее-надежнее. Пока остановились на nodejs — будем разбираться.

Добавить комментарий