Short Polling: что это, как работает и где используется

Автор: IT Sectr Опубликовано: 2026-06-02 Время чтения: 8 мин

Short Polling — это техника взаимодействия клиента и сервера, при которой клиент отправляет HTTP-запросы через фиксированные интервалы времени для получения обновлённых данных. Сервер обрабатывает каждый запрос немедленно, возвращая актуальное состояние даже при отсутствии изменений. По данным Amazon Web Services, 2024, Short Polling является наиболее простым для реализации, но наименее эффективным методом опроса, создающим избыточную нагрузку на сервер и сеть.

Главное

  • Short Polling — техника, при которой клиент отправляет HTTP-запросы через фиксированный интервал независимо от появления данных.
  • Принцип — клиент по таймеру опрашивает сервер, сервер немедленно возвращает текущее состояние, даже если оно не изменилось.
  • Простота — реализация не требует асинхронной обработки на сервере, достаточно стандартного REST-эндпоинта.
  • Недостаток — избыточный трафик при отсутствии обновлений: каждый запрос включает полные HTTP-заголовки и обработку на сервере.
  • Применение — простые дашборды, мониторинг с невысокой частотой опроса и внутренние системы без требований реального времени.

Что такое Short Polling

Short Polling — это паттерн коммуникации, при котором клиент периодически отправляет HTTP-запросы к серверу с заранее заданным интервалом, а сервер обрабатывает каждый запрос синхронно и немедленно возвращает результат. Интервал опроса задаётся на стороне клиента с помощью таймеров и обычно составляет от 1 до 60 секунд в зависимости от требований к актуальности данных.

Short Polling — хронологически первый механизм организации реального времени в веб-приложениях. В начале 2000-х годов, до появления XMLHttpRequest второго поколения, веб-страницы использовали <meta http-equiv="refresh"> или периодическую перезагрузку iframe для обновления содержимого. С появлением технологии AJAX (Asynchronous JavaScript and XML) в 2005 году Short Polling стал стандартным подходом для обновления данных без полной перезагрузки страницы.

Архитектура Short Polling

Архитектура Short Polling включает три компонента: клиентский таймер, HTTP-запрос и серверный обработчик. Клиент запускает интервальный таймер, по срабатыванию которого отправляется GET-запрос к серверу. Сервер выполняет запрос к базе данных или другому источнику, формирует ответ и немедленно возвращает его клиенту. Клиент обновляет интерфейс и ждёт следующего срабатывания таймера. Этот цикл повторяется бесконечно, пока приложение активно.

Проблема избыточных запросов

Главная проблема Short Polling — неизбежные пустые запросы. Если данные изменяются редко, большинство запросов возвращают результат "без изменений", тратя пропускную способность сети и процессорное время на обработку. При 10 000 клиентов с интервалом опроса 5 секунд сервер получает 2 000 запросов в секунду — значительная часть которых бесполезна, если частота обновлений составляет 1 событие в минуту.

Как работает Short Polling

Short Polling работает по простому циклу: клиент устанавливает интервальный таймер с заданным периодом (например, 5000 мс). При каждом срабатывании таймера клиент формирует HTTP GET-запрос к серверному эндпоинту, обычно с параметром временной метки последнего обновления. Сервер получает запрос, проверяет наличие новых данных после указанной метки и возвращает ответ — либо с новыми данными, либо с индикатором отсутствия обновлений.

Критический параметр настройки Short Polling — интервал опроса. Слишком короткий интервал (менее 3 секунд) создаёт высокую нагрузку на сервер и сеть. Слишком длинный (более 30 секунд) снижает актуальность данных. Оптимальный интервал зависит от сценария: для панелей мониторинга — 5–15 секунд, для лент новостей — 30–60 секунд, для критических алертов — 1–3 секунды. Выбор интервала всегда является компромиссом между актуальностью данных и нагрузкой на инфраструктуру.

Адаптивный интервал опроса

Для снижения нагрузки при простое используется адаптивный интервал: если несколько последовательных запросов вернули пустой результат, интервал увеличивается (например, с 5 до 15 секунд). При появлении новых данных интервал сбрасывается до минимального значения. Алгоритм экспоненциальной задержки (exponential backoff) позволяет сократить количество пустых запросов в 3–5 раз при редких обновлениях.

Пример реализации Short Polling на JavaScript

Рассмотрим клиентскую реализацию Short Polling с использованием setInterval и Fetch API. Функция принимает URL эндпоинта и интервал опроса в миллисекундах.

js
function startPolling(url, intervalMs) {
    const lastTimestamp = new Date().toISOString();

    const timerId = setInterval(async () => {
        try {
            const params = new URLSearchParams({
                since: lastTimestamp
            });
            const response = await fetch(url + "?" + params);
            const data = await response.json();

            if (data.updates && data.updates.length > 0) {
                renderUpdates(data.updates);
                console.log("Received", data.updates.length, "updates");
            }
        } catch (error) {
            console.error("Polling failed:", error);
        }
    }, intervalMs);

    return timerId;
}

const timer = startPolling("/api/updates", 5000);
// clearInterval(timer) для остановки

Код создаёт интервал опроса с периодом 5 секунд и передаёт серверу временную метку последнего обновления. Сервер может использовать этот параметр для фильтрации данных и возврата только новых записей, сокращая объём передаваемой информации. Функция возвращает идентификатор таймера для возможности остановки опроса.

Серверная часть Short Polling

Серверная реализация для Short Polling предельно проста — это обычный REST-endpoint, принимающий GET-запросы и возвращающий JSON-ответ с текущим состоянием или данными, изменёнными после указанной метки.

js
const express = require("express");
const app = express();

let items = [];

app.get("/api/updates", (req, res) => {
    const since = req.query.since;
    const filtered = items.filter(item => item.timestamp > since);
    res.json({ updates: filtered });
});

app.listen(3000);

Сервер получает параметр since и фильтрует записи, чья временная метка превышает указанную. Такой подход минимизирует объём данных в каждом ответе, возвращая только инкрементальные изменения. При отсутствии новых данных сервер возвращает пустой массив, а клиент продолжает опрос по расписанию.

Short Polling vs Long Polling

Short Polling и Long Polling решают одну задачу — доставку данных от сервера — но кардинально различаются по эффективности. Short Polling использует фиксированный интервал запросов, создавая предсказуемую нагрузку, в то время как Long Polling удерживает соединение до появления события, минимизируя количество пустых ответов.

КритерийShort PollingLong Polling
Сложность реализацииНизкая, стандартный RESTСредняя, асинхронная обработка
Задержка обновленийФиксированная, до N секундМинимальная, при возникновении события
Количество запросовПостоянное, N запросов в минутуПо событиям, обычно значительно меньше
Нагрузка на серверВысокая при малом интервалеУдержание соединений, асинхронная обработка
Трафик при простоеМаксимальный, каждый запрос с заголовкамиМинимальный, одно открытое соединение
МасштабированиеПростое, stateless запросыСложное, требуется общая очередь событий

Выбор между техниками зависит от частоты обновлений данных. Если события происходят чаще, чем раз в 10 секунд — оба подхода дают сопоставимую нагрузку, и Short Polling может оказаться проще. Если события редкие (часы или минуты между изменениями) — Long Polling предпочтительнее, так как не создаёт пустых запросов. Для промежуточных сценариев выбор зависит от инфраструктурных ограничений и возможности использовать WebSocket.

Когда применяется Short Polling

Short Polling применяется в сценариях, где требования к актуальности данных невысоки, а простота реализации имеет приоритет над эффективностью. Наиболее типичные случаи — внутренние административные панели, системы мониторинга с невысокой частотой алертов и приложения, где задержка в 15–30 секунд является приемлемой.

  • Панели мониторинга — дашборды с метриками, которые обновляются раз в 10–30 секунд, не требующие мгновенной реакции на изменения.
  • Статус-страницы — страницы проверки доступности сервисов, где данные обновляются с интервалом 30–60 секунд и задержка не критична.
  • Аналитические отчёты — внутренние системы аналитики с периодическим сбором данных, где актуальность до 1 минуты приемлема.
  • Простые игры — пошаговые мультиплеерные игры без требований реального времени, где ход обновляется раз в несколько секунд.
  • Тестирование — сценарии нагрузочного тестирования и отладки, где Short Polling используется как эталонный метод опроса для сравнения с другими техниками.

Важное ограничение — Short Polling не подходит для критичных по времени приложений (торговые терминалы, системы экстренного оповещения), где задержка даже в 1 секунду неприемлема. В таких сценариях необходимо использовать WebSocket, Server-Sent Events или Long Polling. При проектировании системы с Short Polling следует рассчитывать бюджет запросов: при 1 000 клиентов с интервалом 5 секунд сервер обрабатывает 12 000 запросов в минуту, что требует соответствующей ресурсной базы.

Часто задаваемые вопросы

Что такое Short Polling простыми словами?

Short Polling — это когда приложение каждые N секунд спрашивает сервер: "есть новые данные?", и сервер каждый раз отвечает, даже если ничего не изменилось. Это как подходить к почтовому ящику каждые 5 минут, чтобы проверить, пришла ли новая почта.

Какой интервал опроса выбрать для Short Polling?

Оптимальный интервал Short Polling зависит от сценария: 5–10 секунд для панелей мониторинга, 15–30 секунд для лент новостей, 30–60 секунд для статус-страниц. Интервал должен быть компромиссом между актуальностью данных и нагрузкой на сервер. Начните с 10 секунд и корректируйте по результатам тестирования.

Чем Short Polling отличается от Long Polling?

Short Polling — клиент постоянно "дёргает" сервер с фиксированным интервалом. Long Polling — клиент делает один запрос, а сервер держит его открытым до появления данных. Short Polling проще реализовать, но он создаёт больше пустых запросов при редких обновлениях.

Когда Short Polling лучше WebSocket?

Short Polling проще в реализации, чем WebSocket, и не требует специального протокола — работает через обычные HTTP-запросы. Short Polling оправдан для простых внутренних систем, где задержка 10–30 секунд приемлема, а инфраструктурные затраты на поддержку WebSocket неоправданны.

Как уменьшить нагрузку от Short Polling на сервер?

Используйте адаптивный интервал: при отсутствии обновлений увеличивайте паузу между запросами в 2–3 раза. Добавьте параметр since с меткой последнего запроса, чтобы сервер возвращал только инкрементальные изменения. Кэшируйте ответы на стороне CDN или прокси-сервера для снижения нагрузки на бэкенд.

Итоги

  • Short Polling — техника опроса сервера с фиксированным интервалом, при которой клиент отправляет HTTP-запросы по таймеру независимо от появления новых данных.
  • Принцип — циклический опрос через setInterval или рекурсивный setTimeout с постоянным или адаптивным интервалом.
  • Преимущество — максимальная простота реализации и отладки, не требует асинхронной обработки на сервере и специальных протоколов.
  • Недостаток — избыточный трафик при редких обновлениях: пустые запросы с полными HTTP-заголовками создают бесполезную нагрузку.
  • Оптимальный интервал — 5–15 секунд для мониторинга, 15–60 секунд для данных с низкой частотой изменений, 1–3 секунды для критичных сценариев.
  • Сравнение — проще Long Polling, но менее эффективен при редких событиях; уступает WebSocket по производительности и задержке.
  • Рекомендация — используйте Short Polling только для простых внутренних систем с невысокими требованиями к актуальности данных или как эталонный метод в тестах.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также