Performance
HTTP/1.1, HTTP/2, และ HTTP/3 ต่างกันอย่างไร?
HTTP (HyperText Transfer Protocol) คือโปรโตคอลที่เบราว์เซอร์ใช้ติดต่อกับเซิร์ฟเวอร์ของเว็บไซต์ HTTP มีหลายเวอร์ชัน แต่ละเวอร์ชันได้รับการปรับปรุงเพื่อทำให้ความเร็วเร็วขึ้น
- HTTP/1.1 — เวอร์ชันเก่าที่ใช้มายาวนาน (ตั้งแต่ปี 1997) ยังคงใช้บนเว็บไซต์หลายแห่งจนถึงปัจจุบัน เบราว์เซอร์ต้องร้องขออาร์เซต (Request) ต่อเชื่อมต่อจำนวนหนึ่งแล้วถึงจะส่งขอครั้งถัดไป ทำให้อาจเกิดปัญหา Head-of-line Blocking (ต้องรออาร์เซตก่อนหน้า)
- HTTP/2 — ปรับปรุงมาในปี 2015 ช่วยให้เบราว์เซอร์ส่งหลาย Request พร้อมกัน (Multiplexing) ผ่านเชื่อมต่อเดียว ทำให้เร็วกว่า HTTP/1.1 มาก
- HTTP/3 — เวอร์ชันใหม่ที่ใช้ QUIC Protocol แทน TCP ทำให้ Connection เร็ว Latency ต่ำ เหมาะสำหรับอินเตอร์เน็ตมือถือที่อาจขาดสัญญาณบ่อย ๆ
ทำไม HTTP/2 และ HTTP/3 ช่วยให้เว็บโหลดเร็ว?
HTTP/1.1 มีปัญหาคอขวดในการส่งข้อมูล คุณจินตนาการว่า:
HTTP/1.1: เบราว์เซอร์ร้องขอ HTML ต้องรอให้เซิร์ฟเวอร์ส่ง HTML เรียบร้อย แล้วจึงร้องขอ CSS จากนั้นรอ CSS เรียบร้อย แล้วจึงร้องขอ JavaScript... เป็นแบบต่างคิวยาว ทั้งหมดนี้ใช้เวลา
HTTP/2: เบราว์เซอร์ส่ง HTML CSS JavaScript รูป ทั้งหมดพร้อมกันผ่านเชื่อมต่อเดียว เซิร์ฟเวอร์ตอบกลับพร้อมกันทั้งหมด ไม่ต้องรอตัวต่อตัว
HTTP/3: นอกจากจะส่งพร้อม ยังใช้ QUIC Protocol ที่เร็วกว่า TCP ทำให้ Connection เสถียร และ Latency ต่ำกว่า HTTP/2 อีก นี่คือจุดที่ทำให้ HTTP/3 เร็วที่สุด
อีกประโยชน์ของ HTTP/2 และ HTTP/3:
- Server Push — เซิร์ฟเวอร์สามารถส่งทรัพยากรมาให้เบราว์เซอร์ก่อนที่เบราว์เซอร์จะร้องขอ (ทำให้เร็วขึ้น)
- Header Compression — บีบอัดส่วนหัว Request/Response ทำให้ส่งข้อมูลน้อยลง
- Binary Protocol — HTTP/2 และ HTTP/3 ใช้ Format แบบ Binary แทนข้อความสามารถประมวลผลได้เร็ว
วิธีตรวจสอบว่า Hosting ของคุณรองรับ HTTP/2 หรือ HTTP/3
ไม่ทุก Hosting Provider รองรับ HTTP/2 หรือ HTTP/3 คุณต้องตรวจสอบก่อน ว่า Hosting ของคุณใช้โปรโตคอลใหม่หรือยัง
วิธีที่ 1: ใช้เครื่องมือออนไลน์ (ง่ายที่สุด)
เปิดเว็บไซต์นี้: https://http2.pro/ หรือ https://www.http2check.com/ ใส่ URL ของเว็บไซต์ของคุณ เครื่องมือจะบอกว่าเซิร์ฟเวอร์รองรับ HTTP/2, HTTP/1.1 หรือ HTTP/3
วิธีที่ 2: ใช้ curl Command (ผ่าน Terminal)
ถ้าใช้ Mac หรือ Linux เปิด Terminal แล้วใช้คำสั่ง:
# ตรวจสอบรุ่น HTTP
curl -I --http2 https://yourdomain.com
# ผลลัพธ์ถ้าใช้ HTTP/2 จะเห็น:
# HTTP/2 200
# ถ้ายังเป็น HTTP/1.1 จะเห็น:
# HTTP/1.1 200 OK
วิธีที่ 3: ดู HTTP Header ใน DevTools
เปิดเว็บไซต์ของคุณใน Chrome หรือ Firefox จากนั้น:
- กด F12 เพื่อเปิด DevTools
- ไปที่ Network tab
- รีเฟรชหน้า
- คลิกที่ Request แรก (HTML)
- ดู Headers section ค้นหา "Protocol" หรือ "Transfer Protocol" จะแสดงว่าใช้ h2 (HTTP/2) หรือ http/1.1
อันตรายกับเว็บโฮสติ้ง cPanel
HTTP/2 ต้องใช้ SSL/HTTPS จึงทำงาน หากเว็บไซต์ของคุณไม่มี SSL Certificate ก็ยังคงใช้ HTTP/1.1 ได้เท่านั้น นอกจากนี้ เว็บโฮสติ้งบางแห่งใช้ Apache webserver ตัวเก่า หรือ LiteSpeed แล้วแต่ Hosting Provider บาง Provider ยังไม่ติดตั้ง Module http2 จึง ไม่รองรับ HTTP/2 แต่ CloudFlare CDN รองรับ HTTP/2 และ HTTP/3 เสมอ ถึงแม้เซิร์ฟเวอร์ Hosting ไม่รองรับก็ตาม
สำหรับผู้ที่ใช้ CloudFlare
ถ้าคุณใช้ CloudFlare CDN ผู้เยี่ยมชมจะได้รับ HTTP/2 และ HTTP/3 โดยอัตโนมัติ แม้เซิร์ฟเวอร์ Hosting เดิมไม่รองรับ CloudFlare ทำหน้าที่เป็นผู้กลางและจัดการการส่งข้อมูลให้มีประสิทธิภาพ
ตรวจสอบว่า HTTP/2 ทำงานถูกต้อง
หลังจากยืนยันว่า Hosting รองรับ HTTP/2 ให้ทดสอบด้วยขั้นตอนต่อไปนี้:
# 1. ตรวจสอบ HTTP Version ใน Response Header
curl -I https://yourdomain.com
# 2. ตรวจสอบว่า HTTPS ทำงาน (HTTP/2 ต้องใช้ HTTPS)
openssl s_client -connect yourdomain.com:443
# 3. ลองใน DevTools Network tab ดู Protocol column
# ต้องเห็น h2 หรือ h3 ไม่ใช่ http/1.1
# 4. ทดสอบความเร็วการโหลด ก่อนและหลังเปิด HTTP/2
# ใช้เครื่องมือ GTmetrix, PageSpeed Insights, Lighthouse
แก้ปัญหาที่พบบ่อย
Error: "Hosting ไม่รองรับ HTTP/2"
Hosting Provider ยังใช้ Apache แบบเก่า หรือ LiteSpeed ที่ยังไม่เปิดใช้ mod_http2 ติดต่อ Hosting Provider ขอให้เปิดใช้งาน HTTP/2 หรือ upgrade webserver หากไม่ได้ ให้ใช้ CloudFlare CDN เพื่อให้ผู้เยี่ยมชมได้ HTTP/2 อยู่ดี
Error: "ใช้ HTTP/2 แล้วแต่เว็บยังช้า"
HTTP/2 ช่วยลดปัญหา Latency แต่ไม่ใช่วิธีแก้ยาว ปัญหาอื่นเช่น Plugin ช้า Database มีปัญหา รูปภาพขนาดใหญ่ CSS/JavaScript ไม่ได้บีบอัด จะยังคงทำให้เว็บช้า ให้หาปัญหาอื่น เช่นลองเปิด cPanel ดู Load Average ว่าไม่สูงเกิน
Error: "HTTP/3 ไม่ทำงาน แม้ว่าตรวจสอบแล้วมี"
HTTP/3 ใช้ QUIC Protocol ที่เป็นอัตโนมัติ แต่บาง Firewall หรือ ISP ยังบล็อก UDP Port 443 ที่ HTTP/3 ใช้งาน ผู้เยี่ยมชมจะโดยอัตโนมัติ Fallback ไปใช้ HTTP/2 หรือ HTTP/1.1 แทน ไม่ต้องกังวลเพราะ HTTP/3 ยังคงทำงาน แต่ผ่าน TCP ลดลง
Error: "DevTools บอกว่า HTTP/1.1 แม้ว่า curl บอก HTTP/2"
อาจเป็นเพราะเบราว์เซอร์ cache ข้อมูลเก่า ลองล้าง Cache (Ctrl+Shift+Delete) หรือเปิด Incognito Mode ใหม่ หรือลองเบราว์เซอร์อื่น
Error: "CloudFlare บอก HTTP/3 แล้วแต่ยังไม่เห็นความเร็วเพิ่ม"
HTTP/3 ยังใหม่ และเบราว์เซอร์บางตัวหรือมือถือบางรุ่นยังไม่รองรับเต็มที่ สำหรับส่วนใหญ่ HTTP/2 ก็พอ ลองใช้ Lighthouse ในเบราว์เซอร์ Chrome ดู Performance Score ดีขึ้นไหม
คำถามที่พบบ่อย
Q: ต้องเปลี่ยน Code เพื่อให้รองรับ HTTP/2 หรือ HTTP/3 หรือไม่?
A: ไม่ต้อง HTTP/2 และ HTTP/3 เป็นการเปลี่ยนแปลงใน Protocol Layer ที่เซิร์ฟเวอร์จัดการ Code HTML, CSS, JavaScript ของเว็บไซต์ไม่ต้องเปลี่ยน เพียงแค่เซิร์ฟเวอร์รองรับ Protocol นั้นก็ได้รับประโยชน์เสร็จเรียบร้อย
Q: ถ้า Hosting ไม่รองรับ HTTP/2 ควรทำอย่างไร?
A: มีสามทางเลือก 1) ติดต่อ Hosting Provider ขอให้เปิด HTTP/2 2) ใช้ CloudFlare CDN ฟรี ซึ่งรองรับ HTTP/2 และ HTTP/3 โดยอัตโนมัติ 3) Upgrade Hosting เป็นแผนที่ใหม่กว่า ที่อาจใช้ Apache 2.4+ หรือ LiteSpeed
Q: HTTP/2 และ HTTP/3 ใช้ Data สูงกว่า HTTP/1.1 หรือไม่?
A: ไม่ HTTP/2 และ HTTP/3 มีการบีบอัด Header (Header Compression) ทำให้ใช้ Data น้อยลง ไม่ว่าคุณจะใช้ Protocol ไหน Data ที่อัพลักษณ์ (Upload) และดาวน์โหลด (Download) ปกติจะเท่าเดิม เพียงแต่ว่า HTTP/2 และ HTTP/3 ส่งได้เร็ว