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("Отримано", data.updates.length, "updates");
            }
        } catch (error) {
            console.error("Помилка опитування:", 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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

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