Short Polling: nó là gì, hoạt động như thế nào và được sử dụng ở đâu

Tác giả: IT Sectr Đã đăng: 2026-06-02 Thời gian đọc: 8 phút

Short Polling là một kỹ thuật giao tiếp client-server trong đó client gửi các yêu cầu HTTP theo khoảng thời gian cố định để nhận dữ liệu cập nhật. Máy chủ xử lý từng yêu cầu ngay lập tức, trả về trạng thái hiện tại ngay cả khi không có thay đổi. Theo Amazon Web Services, 2024, Short Polling là phương pháp polling đơn giản nhất để triển khai nhưng kém hiệu quả nhất, tạo ra tải quá mức lên máy chủ và mạng.

Những điểm chính

  • Short Polling là kỹ thuật client gửi yêu cầu HTTP theo khoảng thời gian cố định bất kể có dữ liệu mới hay không.
  • Nguyên lý — client thăm dò máy chủ theo bộ đếm thời gian, máy chủ trả về ngay trạng thái hiện tại ngay cả khi không thay đổi.
  • Đơn giản — triển khai không yêu cầu xử lý bất đồng bộ trên máy chủ, một endpoint REST tiêu chuẩn là đủ.
  • Nhược điểm — lưu lượng dư thừa khi không có cập nhật: mỗi yêu cầu bao gồm tiêu đề HTTP đầy đủ và xử lý trên máy chủ.
  • Ứng dụng — bảng điều khiển đơn giản, giám sát với tần suất polling thấp và hệ thống nội bộ không yêu cầu thời gian thực.

Short Polling là gì

Short Polling là một mẫu giao tiếp trong đó client định kỳ gửi yêu cầu HTTP đến máy chủ với khoảng thời gian xác định trước, và máy chủ xử lý từng yêu cầu một cách đồng bộ và trả về kết quả ngay lập tức. Khoảng thời gian polling được đặt ở phía client bằng bộ đếm thời gian và thường từ 1 đến 60 giây tùy theo yêu cầu về độ tươi mới của dữ liệu.

Short Polling là cơ chế đầu tiên trong lịch sử để tổ chức giao tiếp thời gian thực trong các ứng dụng web. Vào đầu những năm 2000, trước thế hệ thứ hai của XMLHttpRequest, các trang web sử dụng <meta http-equiv="refresh"> hoặc tải lại iframe định kỳ để cập nhật nội dung. Với sự ra đời của công nghệ AJAX (Asynchronous JavaScript and XML) vào năm 2005, Short Polling đã trở thành phương pháp tiêu chuẩn để cập nhật dữ liệu mà không cần tải lại toàn bộ trang.

Kiến trúc Short Polling

Kiến trúc Short Polling bao gồm ba thành phần: bộ đếm thời gian client, yêu cầu HTTP và trình xử lý máy chủ. Client khởi động một bộ đếm thời gian khoảng, và mỗi khi nó kích hoạt, một yêu cầu GET được gửi đến máy chủ. Máy chủ truy vấn cơ sở dữ liệu hoặc nguồn khác, tạo phản hồi và trả về ngay cho client. Client cập nhật giao diện và chờ lần kích hoạt tiếp theo của bộ đếm thời gian. Chu kỳ này lặp lại vô hạn khi ứng dụng đang hoạt động.

Vấn đề yêu cầu dư thừa

Vấn đề chính của Short Polling là các yêu cầu trống không thể tránh khỏi. Nếu dữ liệu thay đổi hiếm khi, hầu hết các yêu cầu trả về kết quả "không thay đổi", lãng phí băng thông mạng và thời gian CPU xử lý. Với 10.000 client có khoảng thời gian polling 5 giây, máy chủ nhận 2.000 yêu cầu mỗi giây — một phần đáng kể trong số đó là vô ích nếu tần suất cập nhật là 1 sự kiện mỗi phút.

Short Polling hoạt động như thế nào

Short Polling hoạt động theo một chu kỳ đơn giản: client đặt một bộ đếm thời gian khoảng với chu kỳ nhất định (ví dụ: 5000 ms). Mỗi lần bộ đếm thời gian kích hoạt, client tạo một yêu cầu HTTP GET đến endpoint máy chủ, thường có tham số dấu thời gian của lần cập nhật cuối cùng. Máy chủ nhận yêu cầu, kiểm tra dữ liệu mới sau dấu thời gian được chỉ định và trả về phản hồi — hoặc với dữ liệu mới hoặc với chỉ báo không có cập nhật.

Một tham số cấu hình quan trọng của Short Polling là khoảng thời gian polling. Khoảng thời gian quá ngắn (dưới 3 giây) tạo ra tải cao trên máy chủ và mạng. Khoảng thời gian quá dài (trên 30 giây) làm giảm độ tươi của dữ liệu. Khoảng thời gian tối ưu phụ thuộc vào kịch bản: cho bảng điều khiển giám sát — 5–15 giây, cho nguồn cấp tin tức — 30–60 giây, cho cảnh báo quan trọng — 1–3 giây. Việc chọn khoảng thời gian luôn là sự cân bằng giữa độ tươi của dữ liệu và tải hạ tầng.

Khoảng thời gian polling thích ứng

Để giảm tải trong thời gian không hoạt động, khoảng thời gian thích ứng được sử dụng: nếu nhiều yêu cầu liên tiếp trả về kết quả trống, khoảng thời gian tăng lên (ví dụ: từ 5 lên 15 giây). Khi dữ liệu mới xuất hiện, khoảng thời gian được đặt lại về giá trị tối thiểu. Thuật toán backoff mũ (exponential backoff) có thể giảm số lượng yêu cầu trống đi 3–5 lần trong các bản cập nhật hiếm gặp.

Ví dụ triển khai Short Polling trong JavaScript

Hãy xem xét triển khai Short Polling phía client sử dụng setInterval và Fetch API. Hàm nhận URL endpoint và khoảng thời gian polling tính bằng mili giây.

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("Đã nhận", data.updates.length, "updates");
            }
        } catch (error) {
            console.error("Polling thất bại:", error);
        }
    }, intervalMs);

    return timerId;
}

const timer = startPolling("/api/updates", 5000);
// clearInterval(timer) để dừng

Mã tạo khoảng thời gian polling 5 giây và truyền dấu thời gian của lần cập nhật cuối cùng cho máy chủ. Máy chủ có thể sử dụng tham số này để lọc dữ liệu và chỉ trả về các bản ghi mới, giảm lượng thông tin truyền đi. Hàm trả về định danh bộ đếm thời gian để có thể dừng polling.

Phía máy chủ của Short Polling

Triển khai phía máy chủ cho Short Polling cực kỳ đơn giản — đó là một endpoint REST thông thường chấp nhận yêu cầu GET và trả về phản hồi JSON với trạng thái hiện tại hoặc dữ liệu đã thay đổi sau dấu thời gian được chỉ định.

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);

Máy chủ nhận tham số since và lọc các bản ghi có dấu thời gian vượt quá giá trị được chỉ định. Cách tiếp cận này giảm thiểu lượng dữ liệu trong mỗi phản hồi, chỉ trả về các thay đổi gia tăng. Khi không có dữ liệu mới, máy chủ trả về một mảng trống và client tiếp tục polling theo lịch trình.

Short Polling vs Long Polling

Short Polling và Long Polling giải quyết cùng một vấn đề — phân phối dữ liệu từ máy chủ đến client — nhưng khác biệt cơ bản về hiệu quả. Short Polling sử dụng khoảng thời gian yêu cầu cố định, tạo ra tải có thể dự đoán, trong khi Long Polling giữ kết nối mở cho đến khi sự kiện xảy ra, giảm thiểu số lượng phản hồi trống.

Tiêu chíShort PollingLong Polling
Độ phức tạp triển khaiThấp, REST tiêu chuẩnTrung bình, xử lý bất đồng bộ
Độ trễ cập nhậtCố định, lên đến N giâyTối thiểu, khi sự kiện xảy ra
Số lượng yêu cầuKhông đổi, N yêu cầu mỗi phútTheo sự kiện, thường ít hơn nhiều
Tải máy chủCao với khoảng thời gian ngắnGiữ kết nối, xử lý bất đồng bộ
Lưu lượng khi không hoạt độngTối đa, mỗi yêu cầu với tiêu đềTối thiểu, một kết nối mở
Khả năng mở rộngĐơn giản, yêu cầu không trạng tháiPhức tạp, yêu cầu hàng đợi sự kiện dùng chung

Việc lựa chọn giữa các kỹ thuật phụ thuộc vào tần suất cập nhật của dữ liệu. Nếu sự kiện xảy ra thường xuyên hơn một lần mỗi 10 giây — cả hai cách tiếp cận đều tạo ra tải tương đương và Short Polling có thể đơn giản hơn. Nếu sự kiện hiếm (hàng giờ hoặc phút giữa các thay đổi) — Long Polling được ưu tiên hơn vì nó không tạo ra yêu cầu trống. Đối với các kịch bản trung gian, việc lựa chọn phụ thuộc vào các hạn chế về hạ tầng và khả năng sử dụng WebSocket.

Khi nào sử dụng Short Polling

Short Polling được sử dụng trong các kịch bản mà yêu cầu về độ tươi của dữ liệu thấp và sự đơn giản của triển khai được ưu tiên hơn hiệu quả. Các trường hợp điển hình nhất là bảng quản trị nội bộ, hệ thống giám sát với tần suất cảnh báo thấp và các ứng dụng nơi độ trễ 15–30 giây có thể chấp nhận được.

  • Bảng điều khiển giám sát — bảng điều khiển với các số liệu cập nhật mỗi 10–30 giây, không yêu cầu phản ứng tức thời với thay đổi.
  • Trang trạng thái — trang kiểm tra khả dụng của dịch vụ nơi dữ liệu cập nhật mỗi 30–60 giây và độ trễ không quan trọng.
  • Báo cáo phân tích — hệ thống phân tích nội bộ với thu thập dữ liệu định kỳ nơi độ tươi lên đến 1 phút có thể chấp nhận được.
  • Trò chơi đơn giản — trò chơi nhiều người chơi theo lượt không yêu cầu thời gian thực, nơi lượt chơi cập nhật vài giây một lần.
  • Kiểm thử — kịch bản kiểm thử tải và gỡ lỗi nơi Short Polling được sử dụng như phương pháp polling tham chiếu để so sánh với các kỹ thuật khác.

Hạn chế quan trọng — Short Polling không phù hợp cho các ứng dụng quan trọng về thời gian (terminal giao dịch, hệ thống cảnh báo khẩn cấp) nơi ngay cả độ trễ 1 giây cũng không thể chấp nhận. Trong các kịch bản như vậy, cần sử dụng WebSocket, Server-Sent Events hoặc Long Polling. Khi thiết kế hệ thống với Short Polling, cần tính toán ngân sách yêu cầu: với 1.000 client có khoảng thời gian 5 giây, máy chủ xử lý 12.000 yêu cầu mỗi phút, đòi hỏi cơ sở tài nguyên tương ứng.

Câu hỏi thường gặp

Short Polling là gì một cách đơn giản?

Short Polling là khi ứng dụng hỏi máy chủ mỗi N giây: "có dữ liệu mới không?", và máy chủ luôn trả lời, ngay cả khi không có gì thay đổi. Giống như đi đến hộp thư mỗi 5 phút để kiểm tra xem có thư mới không.

Nên chọn khoảng thời gian polling nào cho Short Polling?

Khoảng thời gian Short Polling tối ưu phụ thuộc vào kịch bản: 5–10 giây cho bảng điều khiển giám sát, 15–30 giây cho nguồn cấp tin tức, 30–60 giây cho trang trạng thái. Khoảng thời gian nên là sự cân bằng giữa độ tươi của dữ liệu và tải máy chủ. Bắt đầu với 10 giây và điều chỉnh dựa trên kết quả kiểm thử.

Short Polling khác Long Polling như thế nào?

Short Polling — client liên tục "hỏi" máy chủ với khoảng thời gian cố định. Long Polling — client thực hiện một yêu cầu và máy chủ giữ nó mở cho đến khi có dữ liệu. Short Polling đơn giản hơn để triển khai nhưng tạo ra nhiều yêu cầu trống hơn trong các bản cập nhật hiếm gặp.

Khi nào Short Polling tốt hơn WebSocket?

Short Polling đơn giản hơn để triển khai so với WebSocket và không yêu cầu giao thức đặc biệt — nó hoạt động qua các yêu cầu HTTP thông thường. Short Polling phù hợp cho các hệ thống nội bộ đơn giản nơi độ trễ 10–30 giây có thể chấp nhận và chi phí hạ tầng để hỗ trợ WebSocket là không hợp lý.

Làm thế nào để giảm tải từ Short Polling lên máy chủ?

Sử dụng khoảng thời gian thích ứng: khi không có cập nhật, tăng khoảng nghỉ giữa các yêu cầu lên 2–3 lần. Thêm tham số since với dấu thời gian của yêu cầu cuối cùng để máy chủ chỉ trả về các thay đổi gia tăng. Lưu cache các phản hồi ở phía CDN hoặc proxy để giảm tải backend.

Tổng kết

  • Short Polling là kỹ thuật polling máy chủ với khoảng thời gian cố định, nơi client gửi yêu cầu HTTP qua bộ đếm thời gian bất kể có dữ liệu mới hay không.
  • Nguyên lý — polling tuần hoàn qua setInterval hoặc setTimeout đệ quy với khoảng thời gian cố định hoặc thích ứng.
  • Ưu điểm — đơn giản tối đa trong triển khai và gỡ lỗi, không yêu cầu xử lý bất đồng bộ trên máy chủ hoặc giao thức đặc biệt.
  • Nhược điểm — lưu lượng dư thừa trong các bản cập nhật hiếm: yêu cầu trống với tiêu đề HTTP đầy đủ tạo ra tải vô ích.
  • Khoảng thời gian tối ưu — 5–15 giây cho giám sát, 15–60 giây cho dữ liệu có tần suất thay đổi thấp, 1–3 giây cho kịch bản quan trọng.
  • So sánh — đơn giản hơn Long Polling nhưng kém hiệu quả hơn cho sự kiện hiếm; kém hơn WebSocket về hiệu suất và độ trễ.
  • Khuyến nghị — chỉ sử dụng Short Polling cho các hệ thống nội bộ đơn giản với yêu cầu độ tươi dữ liệu thấp hoặc như phương pháp tham chiếu trong kiểm thử.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm