Short Polling — bu, müştəri və server arasında qarşılıqlı əlaqə texnikasıdır, burada müştəri yenilənmiş məlumatları almaq üçün sabit vaxt intervalları ilə HTTP sorğuları göndərir. Server hər sorğunu dərhal emal edir, dəyişiklik olmasa belə aktual vəziyyəti qaytarır. Amazon Web Services, 2024-in məlumatlarına görə, Short Polling həyata keçirməsi ən asan, lakin ən az səmərəli sorğu metodudur və server və şəbəkəyə həddindən artıq yük yaradır.
Əsas məqamlar
Short Polling — bu, müştərinin müəyyən edilmiş intervallarla serverə HTTP sorğuları göndərdiyi və serverin hər sorğunu sinxron şəkildə dərhal emal edib nəticəni qaytardığı rabitə nümunəsidir. Sorğu intervalı müştəri tərəfində taymerlər vasitəsilə təyin edilir və adətən məlumatların aktualılıq tələblərindən asılı olaraq 1 saniyədən 60 saniyəyə qədər dəyişir.
Short Polling xronoloji olaraq veb tətbiqlərdə real vaxtın təşkilinin ilk mexanizmidir. 2000-ci illərin əvvəllərində, ikinci nəsil XMLHttpRequest yaranmamışdan əvvəl, veb səhifələr məzmunu yeniləmək üçün <meta http-equiv=”refresh”> və ya dövri iframe yenidən yükləmədən istifadə edirdi. 2005-ci ildə AJAX (Asynchronous JavaScript and XML) texnologiyasının yaranması ilə Short Polling səhifəni tam yenidən yükləmədən məlumatları yeniləmək üçün standart yanaşma oldu.
Short Polling arxitekturası üç komponenti əhatə edir: müştəri taymeri, HTTP sorğu və server emalçısı. Müştəri interval taymerini işə salır, onun işə düşməsi ilə serverə GET sorğu göndərilir. Server məlumat bazasına və ya digər mənbəyə sorğu edir, cavab yaradır və dərhal müştəriyə qaytarır. Müştəri interfeysi yeniləyir və növbəti taymer işə düşməsini gözləyir. Bu dövr tətbiq aktiv olduğu müddət ərzində sonsuz təkrarlanır.
Short Polling-in əsas problemi — qaçınılmaz boş sorğulardır. Məlumatlar nadir hallarda dəyişirsə, sorğuların əksəriyyəti „dəyişiklik yoxdur” nəticəsini qaytarır, şəbəkə ötürücülüyünü və prosessor vaxtını emala sərf edir. 5 saniyəlik sorğu intervalı ilə 10 000 müştəri olduqda server saniyədə 2 000 sorğu alır — yenilənmə tezliyi dəqiqədə 1 hadisə olduqda bunların əhəmiyyətli hissəsi faydasızdır.
Short Polling sadə bir dövr üzrə işləyir: müştəri müəyyən edilmiş dövrlə (məsələn, 5000 ms) interval taymeri qurur. Hər taymer işə düşməsində müştəri serverin son nöqtəsinə, adətən son yenilənmənin vaxt damğası parametri ilə HTTP GET sorğu yaradır. Server sorğunu alır, göstərilən vaxt damğasından sonra yeni məlumatların olub-olmadığını yoxlayır və cavab qaytarır — ya yeni məlumatlarla, ya da yenilənmə olmadığı göstəricisi ilə.
Short Polling-in kritik konfiqurasiya parametri — sorğu intervalıdır. Çox qısa interval (3 saniyədən az) server və şəbəkəyə yüksək yük yaradır. Çox uzun interval (30 saniyədən çox) məlumatların aktualılığını azaldır. Optimal interval ssenaridən asılıdır: monitoring panelləri üçün — 5–15 saniyə, xəbər lentləri üçün — 30–60 saniyə, kritik xəbərdarlıqlar üçün — 1–3 saniyə. Interval seçimi həmişə məlumatların aktualılığı ilə infrastruktura yük arasında kompromisdir.
Boş vaxtlarda yükü azaltmaq üçün adaptiv interval istifadə olunur: bir neçə ardıcıl sorğu boş nəticə qaytararsa, interval artırılır (məsələn, 5-dən 15 saniyəyə). Yeni məlumatlar göründükdə interval minimum dəyərə sıfırlanır. Eksponensial gecikmə alqoritmi (exponential backoff) nadir yenilənmələrdə boş sorğuların sayını 3–5 dəfə azaltmağa imkan verir.
Short Polling-in setInterval və Fetch API istifadə edən müştəri tətbiqini nəzərdən keçirək. Funksiya endpoint URL və millisaniyələrlə sorğu intervalını qəbul edir.
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("Alındı", data.updates.length, "updates");
}
} catch (error) {
console.error("Sorğu uğursuz oldu:", error);
}
}, intervalMs);
return timerId;
}
const timer = startPolling("/api/updates", 5000);
// clearInterval(timer) dayandırmaq üçün
Kod 5 saniyəlik dövrlə sorğu intervalı yaradır və serverə son yenilənmənin vaxt damğasını ötürür. Server bu parametrdən məlumatları filtrləmək və yalnız yeni qeydləri qaytarmaq üçün istifadə edə bilər, ötürülən məlumatın həcmini azaldır. Funksiya sorğunu dayandırmaq imkanı üçün taymer identifikatoru qaytarır.
Short Polling üçün server tətbiqi son dərəcə sadədir — bu, GET sorğularını qəbul edən və cari vəziyyətlə və ya göstərilən vaxt damğasından sonra dəyişdirilmiş məlumatlarla JSON cavabı qaytaran adi REST endpoint-dir.
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);
Server since parametrini alır və vaxt damğası göstəriləni aşan qeydləri filtrləyir. Bu yanaşma hər cavabda məlumatın həcmini minimuma endirir, yalnız artım dəyişikliklərini qaytarır. Yeni məlumat olmadıqda server boş massiv qaytarır və müştəri cədvəl üzrə sorğuya davam edir.
Short Polling və Long Polling eyni vəzifəni həll edir — serverdən məlumatların çatdırılması — lakin səmərəliliyə görə köklü şəkildə fərqlənir. Short Polling sabit sorğu intervalından istifadə edir, proqnozlaşdırıla bilən yük yaradır, Long Polling isə hadisə baş verənə qədər əlaqəni saxlayır, boş cavabların sayını minimuma endirir.
| Kriteriya | Short Polling | Long Polling |
|---|---|---|
| Tətbiq mürəkkəbliyi | Aşağı, standart REST | Orta, asinxron emal |
| Yenilənmə gecikməsi | Sabit, N saniyəyə qədər | Minimal, hadisə baş verdikdə |
| Sorğu sayı | Sabit, dəqiqədə N sorğu | Hadisələr üzrə, adətən çox az |
| Server yükü | Kiçik intervalda yüksək | Əlaqələrin saxlanması, asinxron emal |
| Boş vaxtda trafik | Maksimal, hər sorğu başlıqlarla | Minimal, bir açıq əlaqə |
| Miqyaslama | Sadə, vəziyyətsiz sorğular | Mürəkkəb, ümumi hadisə növbəsi tələb olunur |
Texnikalar arasında seçim məlumatların yenilənmə tezliyindən asılıdır. Hadisələr 10 saniyədə bir dəfədən daha tez baş verirsə — hər iki yanaşma müqayisə edilə bilən yük verir və Short Polling daha sadə ola bilər. Hadisələr nadirdirsə (dəyişikliklər arasında saatlar və ya dəqiqələr) — Long Polling üstünlük təşkil edir, çünki boş sorğular yaratmır. Aralıq ssenarilər üçün seçim infrastruktur məhdudiyyətlərindən və WebSocket istifadə etmə imkanından asılıdır.
Short Polling məlumatların aktualılıq tələblərinin aşağı olduğu, sadəliyin səmərəlilikdən üstün olduğu ssenarilərdə tətbiq edilir. Ən tipik hallar — daxili inzibati panellər, aşağı tezlikli xəbərdarlıqları olan monitoring sistemləri və 15–30 saniyəlik gecikmənin məqbul olduğu tətbiqlərdir.
Vacib məhdudiyyət — Short Polling vaxt baxımından kritik tətbiqlər (ticarət terminalları, təcili xəbərdarlıq sistemləri) üçün uyğun deyil, burada hətta 1 saniyəlik gecikmə də yolverilməzdir. Belə ssenarilərdə WebSocket, Server-Sent Events və ya Long Polling istifadə edilməlidir. Short Polling ilə sistem layihələyərkən sorğu büdcəsini hesablamaq lazımdır: 5 saniyəlik interval ilə 1 000 müştəri olduqda server dəqiqədə 12 000 sorğu emal edir, bu da müvafiq resurs bazası tələb edir.
Tez-tez verilən suallar
Short Polling — bu, tətbiqin hər N saniyədən bir serverə „yeni məlumat var?” sualını verdiyi və serverin heç nə dəyişməsə belə hər dəfə cavab verdiyi zamandır. Bu, yeni poçtun gəlib-gəlmədiyini yoxlamaq üçün hər 5 dəqiqədən bir poçt qutusuna yaxınlaşmaq kimidir.
Optimal Short Polling intervalı ssenaridən asılıdır: monitoring panelləri üçün 5–10 saniyə, xəbər lentləri üçün 15–30 saniyə, status səhifələri üçün 30–60 saniyə. Interval məlumatların aktualılığı ilə server yükü arasında kompromis olmalıdır. 10 saniyədən başlayın və test nəticələrinə görə tənzimləyin.
Short Polling — müştəri serveri sabit intervalda ’çəkir”. Long Polling — müştəri bir sorğu edir, server isə məlumatlar görünənə qədər onu açıq saxlayır. Short Polling tətbiqi daha sadədir, lakin nadir yenilənmələrdə daha çox boş sorğu yaradır.
Short Polling WebSocket-dən daha sadədir və xüsusi protokol tələb etmir — adi HTTP sorğuları vasitəsilə işləyir. Short Polling 10–30 saniyəlik gecikmənin məqbul olduğu sadə daxili sistemlər üçün əsaslandırılır və WebSocket-in saxlanması üçün infrastruktur xərcləri əsassızdır.
Adaptiv interval istifadə edin: yenilənmələr olmadıqda sorğular arasında fasiləni 2–3 dəfə artırın. Serverə yalnız artım dəyişikliklərini qaytarmaq üçün son sorğunun vaxt damğası ilə since parametri əlavə edin. Backend yükünü azaltmaq üçün CDN və ya proksi server tərəfində cavabları keşləyin.
Nəticə
setInterval və ya rekursiv setTimeout vasitəsilə dövri sorğu.Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun