Частота опроса AJAX - Для длительного опроса или нет?

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

1) Отправлять AJAX-запрос каждые 1-2 секунды, чтобы проверьте обновления. 2) Отключить один запрос AJAX, который не вернется, пока не получит данные или не истечет время ожидания. При любом из этих событий запускается следующий запрос. (Я думаю, это называется длинным опросом?)

Количество запросов к базе данных будет таким же, но с №2 будет меньше запросов, запускаемых из браузера, что может сэкономить полосу пропускания и ресурсы клиента. Для сервера: лучше ли иметь один PHP-запрос, который остается активным и спит между запросами, или который запускается каждые несколько секунд, опрашивает БД, а затем отключается? Или нет никакой разницы, и я слишком сильно об этом беспокоюсь?

РЕДАКТИРОВАТЬ: Я полагаю, я должен также указать, что это виджет чата более крупного веб-приложения. Небольшая задержка в общении не убьет пользователя, так как чат - это второстепенная функция. минус [] xs = [] минус (y: ys) xs | y `notElem` xs = y: (минус ys xs) | в противном случае = ...

Моя функция выглядит так:

minus :: (Eq a) => [a] -> [a] -> [a]
minus [] xs                      = []
minus (y:ys) xs | y `notElem` xs = y : (minus ys xs)
                | otherwise      = minus ys xs

Ее можно использовать так:

[99,44,55,22,23423] `minus` [55,22]

с выводом: [99,44,23423]

Я написал это, потому что я глядя на проблему 7 проекта Эйлера, и решето Эратосфена кажется правильным инструментом, и это было так, но я продолжал читать страницу Википедии и дошел до части, касающейся решета Эйлера.

Я попробовал чтобы скопировать / вставить код и запустить его в GHCi, но в моей версии GHCi нет модуля с именем Data.OrdList, и я не смог найти в Hoogle функцию с именем минус .

Это код из Википедии:

 import Data.OrdList (minus)

 primes = euler [2..]
 euler (p : xs) = p : euler (xs `minus` map (*p) (p : xs))

Если я подставлю туда свою минус-функцию, я получаю ошибку нехватки памяти, потому что моя функция не ленивая.

Есть ли способ создать ленивую минус-функцию?

Выполняет ли моя минус-функция то же самое, что и минус-функция в статье Википедии?

6
задан Don Stewart 26 April 2011 в 04:38
поделиться