Web Performance

HTTP/2

Giao thức truyền tải hỗ trợ multiplexing, server push, header compression nhằm cải thiện tốc độ.

4 lượt xem Cập nhật: 30/05/2026

HTTP/2 là gì?

HTTP/2 là phiên bản thứ hai của giao thức HTTP — nền tảng truyền dữ liệu giữa trình duyệt và máy chủ web. Ra mắt chính thức tháng 5/2015 (RFC 7540), HTTP/2 không thay đổi cách hoạt động của HTTP về mặt ngữ nghĩa (ví dụ: phương thức GET, POST, mã trạng thái 200 hay 404 vẫn giữ nguyên), nhưng cải tiến sâu ở lớp vận chuyển để tăng tốc độ và hiệu quả truyền tải.

Khác với HTTP/1.1 — vốn gửi từng yêu cầu một cách tuần tự qua kết nối TCP riêng hoặc dùng pipelining (ít được hỗ trợ và dễ lỗi), HTTP/2 cho phép nhiều yêu cầu và phản hồi chạy đồng thời trên cùng một kết nối, nhờ cơ chế multiplexing. Đây là bước tiến then chốt giúp giảm độ trễ và tránh tắc nghẽn do chờ đợi.

Tại sao quan trọng trong SEO?

Tốc độ tải trang là yếu tố xếp hạng trực tiếp của Google từ năm 2010 (cho desktop) và từ 2018 (cho mobile – Core Web Vitals). HTTP/2 góp phần cải thiện ba chỉ số quan trọng: Time to First Byte (TTFB), First Contentful Paint (FCP)Largest Contentful Paint (LCP) — đặc biệt trên các trang có nhiều tài nguyên (ảnh, CSS, JS, font).

Mặc dù Google xác nhận rằng việc sử dụng HTTP/2 không phải là tín hiệu xếp hạng độc lập, nhưng nó hỗ trợ gián tiếp bằng cách:

  • Giảm số lần bắt tay TCP và TLS (do tái sử dụng kết nối),
  • Loại bỏ hiện tượng “đổ đầy đường ống” (head-of-line blocking) ở mức kết nối,
  • Hỗ trợ nén header mạnh hơn (HPACK), giảm lượng dữ liệu gửi đi tới 80% so với HTTP/1.1,
  • Cung cấp server push — cho phép máy chủ gửi trước tài nguyên mà trình duyệt chưa yêu cầu (tuy tính năng này đã bị nhiều trình duyệt vô hiệu hóa vì khó tối ưu hoá thực tế).

Do đó, website bật HTTP/2 thường đạt điểm Core Web Vitals cao hơn, tỷ lệ thoát thấp hơn và thời gian tương tác dài hơn — tất cả đều là tín hiệu hành vi người dùng ảnh hưởng đến SEO.

Cách hoạt động

HTTP/2 xây dựng trên nền tảng binary framing layer — thay vì văn bản thuần như HTTP/1.1. Mọi dữ liệu đều được chia thành các khung (frame), nhóm lại thành luồng (stream), và gửi qua một kết nối TCP duy nhất.

Các thành phần cốt lõi bao gồm:

  • Multiplexing: Nhiều luồng yêu cầu/phản hồi chạy song song, không chặn nhau. Mỗi luồng có ID riêng và được đánh số ưu tiên.
  • Header compression (HPACK): Nén header bằng bảng tra cứu tĩnh + động, loại bỏ trùng lặp (ví dụ: cookie, user-agent gửi đi nhiều lần).
  • Stream prioritization: Trình duyệt có thể thông báo mức độ ưu tiên cho từng luồng (ví dụ: HTML > CSS > hình nền), giúp máy chủ phân bổ băng thông hợp lý.
  • Server push: Máy chủ có thể gửi tài nguyên kèm theo phản hồi (ví dụ: khi trả trang HTML, đẩy luôn file main.css). Tuy nhiên, tính năng này không còn được Chrome, Firefox hay Safari hỗ trợ từ năm 2022 do gây lãng phí băng thông nếu dự đoán sai.

Hướng dẫn thực hiện

Để kích hoạt HTTP/2, bạn cần đảm bảo cả máy chủ và trình duyệt đều hỗ trợ — nhưng điều kiện tiên quyết là phải dùng HTTPS. HTTP/2 không được triển khai trên kết nối không mã hoá (trừ một vài môi trường kiểm thử cục bộ).

  1. Kiểm tra chứng chỉ SSL/TLS: Đảm bảo chứng chỉ còn hạn, cấu hình đúng (không dùng SHA-1, hỗ trợ TLS 1.2 trở lên).
  2. Cập nhật máy chủ web:
    • Apache: phiên bản ≥ 2.4.17 + mod_http2 (kích hoạt bằng Protocols h2 http/1.1 trong cấu hình).
    • Nginx: phiên bản ≥ 1.9.5 + biên dịch với OpenSSL ≥ 1.0.2 (dùng listen 443 ssl http2;).
    • LiteSpeed: hỗ trợ sẵn từ phiên bản 5.0.
  3. Vô hiệu hoá HTTP/1.1 downgrade: Đảm bảo không đặt Upgrade: h2c hoặc dùng kết nối rõ ràng (h2c) — vì các trình duyệt hiện đại không hỗ trợ.
  4. Kiểm tra kết quả:
    • Dùng công cụ http2.pro nhập URL để xem trạng thái.
    • Trong DevTools (Chrome/Firefox) → tab Network → nhấn chuột phải vào cột tiêu đề → chọn “Protocol” → kiểm tra cột hiển thị h2.

Lỗi thường gặp

Dưới đây là những sự cố phổ biến khi triển khai HTTP/2 và cách xử lý:

Lỗi Nguyên nhân Cách khắc phục
Trình duyệt hiển thị http/1.1 dù đã cấu hình Chứng chỉ SSL không hợp lệ, TLS quá cũ (dưới 1.2), hoặc máy chủ chưa bật HTTP/2 trong cấu hình. Kiểm tra chứng chỉ tại SSL Checker; nâng cấp OpenSSL và cập nhật cấu hình máy chủ.
Hiệu suất không cải thiện rõ rệt Website chủ yếu tải ít tài nguyên; hoặc dùng CDN chưa hỗ trợ HTTP/2 end-to-end (ví dụ: request tới CDN là h2, nhưng CDN gọi lại origin qua HTTP/1.1). Đo thời gian tải bằng WebPageTest với hai chế độ (h1 vs h2); kiểm tra toàn bộ chuỗi kết nối — từ client → CDN → origin.
Lỗi “ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY” Trình duyệt từ chối kết nối do cấu hình TLS yếu (ví dụ: dùng cipher suite cũ, thiếu OCSP stapling, hoặc key nhỏ hơn 2048 bit). Dùng SSL Labs Test để chẩn đoán; áp dụng cấu hình TLS hiện đại (ví dụ: Mozilla’s Modern hoặc Intermediate).

Ví dụ thực tế

Một cửa hàng thương mại điện tử Việt Nam (domain: shoptot.vn) chuyển từ HTTP/1.1 sang HTTP/2 kết hợp với tối ưu CDN và lazy loading. Trước khi nâng cấp, trang danh mục sản phẩm có LCP trung bình 4.2s (mobile). Sau 2 tuần triển khai HTTP/2 đúng cách, LCP giảm còn 2.6s, tỷ lệ thoát giảm 18%, và lưu lượng organic tăng 11% trong vòng 30 ngày — theo dữ liệu Google Analytics và Search Console.

Lưu ý: Kết quả phụ thuộc vào kiến trúc hệ thống. Với website tĩnh đơn giản (chỉ 1–3 tài nguyên), lợi ích có thể không đáng kể. Nhưng với trang tin tức, SaaS hoặc thương mại điện tử có 50+ tài nguyên, HTTP/2 giúp giảm TTFB trung bình 15–30% và tăng khả năng xử lý đồng thời gấp 3–5 lần so với HTTP/1.1.

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

HTTP/2 có thay thế hoàn toàn HTTP/1.1 không?

Không. Các máy chủ và trình duyệt hiện đại đều hỗ trợ cả hai giao thức và tự động negociate (thỏa thuận) phiên bản phù hợp qua TLS ALPN. Nếu trình duyệt không hỗ trợ HTTP/2, kết nối sẽ quay lại HTTP/1.1 một cách trong suốt.

Tôi có cần nâng cấp phần cứng máy chủ để dùng HTTP/2?

Không. HTTP/2 không đòi hỏi CPU/RAM cao hơn — ngược lại, do giảm số kết nối và nén header, nó còn làm nhẹ gánh nặng cho máy chủ. Yêu cầu duy nhất là phần mềm máy chủ đủ mới và cấu hình TLS đúng chuẩn.

HTTP/3 có làm HTTP/2 trở nên lỗi thời?

Chưa. HTTP/3 (dựa trên giao thức QUIC) đang được triển khai dần, nhưng tính đến quý II/2024, chỉ khoảng 32% lưu lượng web toàn cầu dùng HTTP/3 (theo HTTP Archive). HTTP/2 vẫn là tiêu chuẩn rộng rãi nhất và được hỗ trợ đầy đủ trên mọi nền tảng. Việc triển khai HTTP/3 là bước kế tiếp — không phải thay thế bắt buộc.