Каков наилучший способ автоматического обновления содержимого страницы через регулярные промежутки времени? - PullRequest
2 голосов
/ 26 января 2012

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

На сервере я использую cron для извлечения и сохранения данных в базе данных.

Простой способ сделать это - использовать функцию setInterval() и продолжать извлекать данные через определенный промежуток времени, но я думаю, что это просто приведет к ненужной нагрузке на сервер и просто потратит циклы процессора.

Так, каков наилучший способ реализовать это? могу / должен ли я использовать nodeJs для этого?

-Спасибо

P.S. Я просто хочу, чтобы что-то вроде Facebook использовало для обновления своей новостной ленты в середине страницы.

и у меня пока нет опыта работы с nodeJ, так что, честно говоря, я даже не знаю, подходит ли nodeJs для этого или нет.

Ответы [ 3 ]

2 голосов
/ 26 января 2012

Если проблема, которую вы пытаетесь решить, состоит в том, как эффективно обновить отображение в вашем браузере без повторного опроса внутреннего сервера, тогда вы можете использовать «длинный опрос», при котором вы делаете запрос веб-сервера с длительным таймаутом и запросомвозвращается только тогда, когда на самом деле есть какие-то новые данные или время ожидания истекло.Вы можете узнать больше, выполнив поиск в Google или SO по запросу "длинный опрос javascript".Вот некоторые из этих ссылок:

Как реализовать базовый «длинный опрос»?

Как реализовать серверный пуш / длинный опрос / комету с использованиемPHP и Javascript

http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

В современных браузерах вы также можете использовать веб-сокеты, где ваш клиент открывает сокет непосредственно на сервер, а сервер просто отправляет вам новые данныекогда появляются новые данные.

В любом случае вам необходим внутренний сервер, который может обрабатывать множество одновременных, но в основном незанятых соединений.

0 голосов
/ 30 января 2012

Попробуйте прибегнуть к помощи socket.io / now.js, это легко решит вашу проблему, подтолкнув к клиенту веб-сокеты и изящно переключившись на флэш-сокеты.Вам не нужно переносить весь ваш код в node.js, вместо этого используйте его вместе с исходным кодом.Также обратите внимание, что если интервал изначально составляет около 5 минут, вам лучше использовать setInterval ajax.Websockets лучше всего подходит для (почти) общения в реальном времени (с небольшой задержкой в ​​течение нескольких секунд, например, в чате).

0 голосов
/ 26 января 2012

Узел определенно может быть полезен для этого, но это не обязательно, как говорит jfriend00.Взгляните на socket.io для примера «push» уведомлений с вашего сервера в браузер.Поскольку у вас нет никакого опыта работы с node.js, в зависимости от приложения будет зависеть, рекомендую ли я его в качестве решения или нет.Если бы это был просто увлекательный проект в образовательных целях, я бы сказал, давай поработаем.Если это для производственной системы, и вы еще не используете node.js в других областях, я говорю о чем-то простом, например о методе setInterval, который вы упомянули в своем вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...