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 คือคำขอเปล่าที่หลีกเลี่ยงไม่ได้ หากข้อมูลเปลี่ยนแปลงน้อยครั้ง คำขอส่วนใหญ่จะส่งคืนผลลัพธ์ "ไม่มีการเปลี่ยนแปลง" ทำให้สิ้นเปลืองแบนด์วิดท์เครือข่ายและเวลา CPU ในการประมวลผล ด้วยไคลเอ็นต์ 10,000 รายที่มีช่วงเวลาโพลล์ 5 วินาที เซิร์ฟเวอร์ได้รับคำขอ 2,000 รายการต่อวินาที — ซึ่งส่วนสำคัญไร้ประโยชน์หากความถี่ในการอัปเดตคือ 1 เหตุการณ์ต่อนาที

Short Polling ทำงานอย่างไร

Short Polling ทำงานในวัฏจักรง่าย ๆ: ไคลเอ็นต์ตั้งตัวจับเวลาช่วงด้วยระยะเวลาที่กำหนด (เช่น 5000 ms) ทุกครั้งที่ตัวจับเวลาทำงาน ไคลเอ็นต์จะสร้างคำขอ 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 ทั่วไปที่รับคำขอ 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 เทียบกับ Long Polling

Short Polling และ Long Polling แก้ปัญหาเดียวกัน — การส่งข้อมูลจากเซิร์ฟเวอร์ไปยังไคลเอ็นต์ — แต่แตกต่างกันอย่างสิ้นเชิงในด้านประสิทธิภาพ Short Polling ใช้ช่วงเวลาคำขอคงที่ สร้างภาระที่คาดการณ์ได้ ในขณะที่ Long Polling รักษาการเชื่อมต่อให้เปิดอยู่จนกว่าเหตุการณ์จะเกิดขึ้น ลดจำนวนการตอบสนองเปล่า

เกณฑ์Short PollingLong Polling
ความซับซ้อนในการนำไปใช้ต่ำ, REST มาตรฐานปานกลาง, การประมวลผลแบบอะซิงโครนัส
ความหน่วงของการอัปเดตคงที่, สูงสุด N วินาทีน้อยที่สุด, เมื่อเหตุการณ์เกิดขึ้น
จำนวนคำขอคงที่, N คำขอต่อนาทีตามเหตุการณ์, โดยปกติน้อยกว่ามาก
ภาระเซิร์ฟเวอร์สูงเมื่อช่วงเวลาสั้นการรักษาการเชื่อมต่อ, การประมวลผลแบบอะซิงโครนัส
ปริมาณการรับส่งข้อมูลเมื่อว่างสูงสุด, แต่ละคำขอมีส่วนหัวน้อยที่สุด, หนึ่งการเชื่อมต่อที่เปิดอยู่
ความสามารถในการขยายง่าย, คำขอไร้สถานะซับซ้อน, ต้องการคิวเหตุการณ์ที่ใช้ร่วมกัน

การเลือกระหว่างเทคนิคขึ้นอยู่กับความถี่ในการอัปเดตของข้อมูล หากเหตุการณ์เกิดขึ้นบ่อยกว่าทุก 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 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม