Short Polling — bu mijoz va server o‘rtasidagi o‘zaro ta’sir texnikasi bo‘lib, unda mijoz yangilangan ma’lumotlarni olish uchun belgilangan vaqt oralig‘ida HTTP so‘rovlarini yuboradi. Server har bir so‘rovni darhol qayta ishlaydi va o‘zgarishlar bo‘lmasa ham joriy holatni qaytaradi. Amazon Web Services, 2024 ma’lumotlariga ko‘ra, Short Polling amalga oshirish eng oson, ammo eng kam samarali so‘rov usuli bo‘lib, server va tarmoqqa ortiqcha yuk hosil qiladi.
Asosiy fikrlar
Short Polling — bu mijoz oldindan belgilangan interval bilan serverga HTTP so‘rovlarini yuboradigan va server har bir so‘rovni sinxron ravishda darhol qayta ishlab natijani qaytaradigan kommunikatsiya namunasidir. So‘rov intervali mijoz tomonida taymerlar yordamida o‘rnatiladi va odatda ma’lumotlarning dolzarblik talablariga qarab 1 dan 60 soniyagacha o‘zgaradi.
Short Polling xronologik jihatdan veb-ilovalarda real vaqtni tashkil etishning birinchi mexanizmidir. 2000-yillarning boshlarida, ikkinchi avlod XMLHttpRequest paydo bo‘lishidan oldin, veb-sahifalar tarkibni yangilash uchun <meta http-equiv=”refresh”> yoki davriy iframe qayta yuklashdan foydalanar edi. 2005-yilda AJAX (Asynchronous JavaScript and XML) texnologiyasining paydo bo‘lishi bilan Short Polling sahifani to‘liq qayta yuklamasdan ma’lumotlarni yangilashning standart yondashuviga aylandi.
Short Polling arxitekturasi uch komponentni o‘z ichiga oladi: mijoz taymeri, HTTP so‘rovi va server ishlovchisi. Mijoz interval taymerini ishga tushiradi, uning ishga tushishi bilan serverga GET so‘rovi yuboriladi. Server ma’lumotlar bazasiga yoki boshqa manbaga so‘rov bajaradi, javob yaratadi va darhol mijozga qaytaradi. Mijoz interfeysni yangilaydi va keyingi taymer ishga tushishini kutadi. Bu tsikl ilova faol bo‘lgan muddat davomida cheksiz takrorlanadi.
Short Polling ning asosiy muammosi — muqarrar bo‘sh so‘rovlar. Ma’lumotlar kamdan-kam o‘zgaradigan bo‘lsa, so‘rovlarning aksariyati „o‘zgarish yo‘q” natijasini qaytaradi, tarmoq o‘tkazuvchanligi va protsessor vaqtini ishlov berishga sarflaydi. 5 soniyali so‘rov intervali bilan 10 000 mijoz bo‘lganda server sekundiga 2 000 so‘rov oladi — yangilanish chastotasi daqiqada 1 hodisa bo‘lganda ularning muhim qismi foydasizdir.
Short Polling oddiy tsikl bo‘yicha ishlaydi: mijoz belgilangan davr bilan (masalan, 5000 ms) interval taymerini o‘rnatadi. Har bir taymer ishga tushishida mijoz serverning so‘nggi nuqtasiga, odatda oxirgi yangilanishning vaqt tamg‘asi parametri bilan HTTP GET so‘rovi yaratadi. Server so‘rovni oladi, ko‘rsatilgan tamg‘adan keyin yangi ma’lumotlar mavjudligini tekshiradi va javob qaytaradi — yo yangi ma’lumotlar bilan, yo yangilanish yo‘qligi ko‘rsatkichi bilan.
Short Polling ning muhim sozlash parametri — so‘rov intervali. Juda qisqa interval (3 soniyadan kam) server va tarmoqqa yuqori yuk hosil qiladi. Juda uzun interval (30 soniyadan ko‘p) ma’lumotlarning dolzarbligini pasaytiradi. Optimal interval stsenariyga bog‘liq: monitoring panellari uchun — 5–15 soniya, yangiliklar lentalari uchun — 30–60 soniya, muhim ogohlantirishlar uchun — 1–3 soniya. Interval tanlash har doim ma’lumotlarning dolzarbligi va infratuzilma yuki o‘rtasida murosadir.
Bo‘sh vaqtlarda yukni kamaytirish uchun adaptiv interval qo‘llaniladi: agar bir necha ketma-ket so‘rovlar bo‘sh natija qaytarsa, interval oshiriladi (masalan, 5 dan 15 soniyagacha). Yangi ma’lumotlar paydo bo‘lganda interval minimal qiymatga qaytariladi. Eksponensial kechikish algoritmi (exponential backoff) kamdan-kam yangilanishlarda bo‘sh so‘rovlar sonini 3–5 marta kamaytirishga imkon beradi.
Short Polling ning setInterval va Fetch API dan foydalanadigan mijoz amalga oshirilishini ko‘rib chiqaylik. Funksiya endpoint URL va millisekundlarda so‘rov intervalini qabul qiladi.
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("Qabul qilindi", data.updates.length, "updates");
}
} catch (error) {
console.error("So‘rov muvaffaqiyatsiz tugadi:", error);
}
}, intervalMs);
return timerId;
}
const timer = startPolling("/api/updates", 5000);
// clearInterval(timer) to‘xtatish uchun
Kod 5 soniyali davr bilan so‘rov intervalini yaratadi va serverga oxirgi yangilanishning vaqt tamg‘asini uzatadi. Server bu parametrdan ma’lumotlarni filtrlash va faqat yangi yozuvlarni qaytarish, uzatiladigan ma’lumot hajmini kamaytirish uchun foydalanishi mumkin. Funksiya so‘rovni to‘xtatish imkoniyati uchun taymer identifikatorini qaytaradi.
Short Polling uchun server amalga oshirilishi juda oddiy — bu GET so‘rovlarini qabul qiladigan va joriy holat yoki ko‘rsatilgan vaqt tamg‘asidan keyin o‘zgartirilgan ma’lumotlar bilan JSON javobini qaytaradigan oddiy 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 oladi va vaqt tamg‘asi ko‘rsatilganidan oshgan yozuvlarni filtrlash. Bu yondashuv har bir javobda ma’lumot hajmini minimallashtiradi, faqat o‘sish o‘zgarishlarini qaytaradi. Yangi ma’lumotlar bo‘lmaganda server bo‘sh massiv qaytaradi va mijoz jadval bo‘yicha so‘rovda davom etadi.
Short Polling va Long Polling bir xil vazifani — serverdan ma’lumotlarni yetkazib berishni — hal qiladi, ammo samaradorlik jihatidan tubdan farq qiladi. Short Polling sobit so‘rov intervalidan foydalanadi, bashorat qilinadigan yuk hosil qiladi, Long Polling esa hodisa sodir bo‘lguncha ulanishni ushlab turadi, bo‘sh javoblar sonini minimallashtiradi.
| Mezon | Short Polling | Long Polling |
|---|---|---|
| Amalga oshirish murakkabligi | Past, standart REST | O‘rta, asinxron ishlov |
| Yangilanish kechikishi | Doimiy, N soniyagacha | Minimal, hodisa sodir bo‘lganda |
| So‘rovlar soni | Doimiy, daqiqada N so‘rov | Hodisalar bo‘yicha, odatda ancha kam |
| Server yuki | Kichik intervalda yuqori | Ulanishlarni ushlab turish, asinxron ishlov |
| Bo‘sh vaqtda trafik | Maksimal, har bir so‘rov sarlavhalar bilan | Minimal, bitta ochiq ulanish |
| Masshtablash | Oddiy, holatsiz so‘rovlar | Murakkab, umumiy hodisa navbati talab qilinadi |
Texnikalar orasida tanlov ma’lumotlarning yangilanish chastotasiga bog‘liq. Agar hodisalar 10 soniyada bir martadan tezroq sodir bo‘lsa — ikkala yondashuv ham solishtirish mumkin bo‘lgan yuk beradi va Short Polling soddaroq bo‘lishi mumkin. Agar hodisalar kamdan-kam bo‘lsa (o‘zgarishlar orasida soatlar yoki daqiqalar) — Long Polling afzalroq, chunki u bo‘sh so‘rovlar yaratmaydi. Oraliq stsenariylar uchun tanlov infratuzilma cheklovlari va WebSocket dan foydalanish imkoniyatiga bog‘liq.
Short Polling ma’lumotlarning dolzarblik talablari past bo‘lgan, soddalik samaradorlikdan ustun bo‘lgan stsenariylarda qo‘llaniladi. Eng tipik holatlar — ichki ma’muriy panellar, past chastotali ogohlantirishli monitoring tizimlari va 15–30 soniyali kechikish maqbul bo‘lgan ilovalar.
Muhim cheklov — Short Polling vaqt jihatidan muhim ilovalar (savdo terminallari, favqulodda ogohlantirish tizimlari) uchun mos emas, bu yerda hatto 1 soniyali kechikish ham qabul qilib bo‘lmaydi. Bunday stsenariylarda WebSocket, Server-Sent Events yoki Long Polling dan foydalanish kerak. Short Polling bilan tizimni loyihalashda so‘rov byudjetini hisoblash zarur: 5 soniyali interval bilan 1 000 mijoz bo‘lganda server daqiqada 12 000 so‘rovni qayta ishlaydi, bu tegishli resurs bazasini talab qiladi.
Tez-tez beriladigan savollar
Short Polling — bu ilova har N soniyada serverdan „yangi ma’lumot bormi?” deb so‘raydi va server hech narsa o‘zgarmagan bo‘lsa ham har safar javob beradi. Bu yangi xat bor-yo‘qligini tekshirish uchun har 5 daqiqada pochta qutisiga yaqinlashishga o‘xshaydi.
Optimal Short Polling intervali stsenariyga bog‘liq: monitoring panellari uchun 5–10 soniya, yangiliklar lentalari uchun 15–30 soniya, status sahifalari uchun 30–60 soniya. Interval ma’lumotlarning dolzarbligi va server yuki o‘rtasida murosa bo‘lishi kerak. 10 soniyadan boshlang va test natijalariga ko‘ra sozlang.
Short Polling — mijoz serverni doimiy intervalda „tortadi”. Long Polling — mijoz bitta so‘rov yuboradi, server esa ma’lumotlar paydo bo‘lguncha uni ochiq ushlab turadi. Short Polling amalga oshirish soddaroq, ammo kamdan-kam yangilanishlarda ko‘proq bo‘sh so‘rovlar yaratadi.
Short Polling WebSocket dan soddaroq va maxsus protokol talab qilmaydi — oddiy HTTP so‘rovlari orqali ishlaydi. Short Polling 10–30 soniyali kechikish maqbul bo‘lgan oddiy ichki tizimlar uchun asosli va WebSocket ni saqlash uchun infratuzilma xarajatlari asossizdir.
Adaptiv interval dan foydalaning: yangilanishlar bo‘lmaganda so‘rovlar orasidagi pauzani 2–3 marta oshiring. Serverga faqat o‘sish o‘zgarishlarini qaytarish uchun oxirgi so‘rovning vaqt tamg‘asi bilan since parametri qo‘shing. Backend yukini kamaytirish uchun CDN yoki proksi server tomonida javoblarni keshlang.
Xulosa
setInterval yoki rekursiv setTimeout orqali davriy so‘rov.Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.